<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>One thing, if <span class="changed">sf.isFileSystem() is true
        and </span><span class="changed">sf.parent is NULL, then in
        previous case, it falls through but with this fix, it returns
        false. Can you clarify?<br>
      </span></p>
    <p><span class="changed"></span></p>
    Regards<br>
    Prasanta<br>
    <div class="moz-cite-prefix">On 8/30/2017 11:42 AM, Sergey Bylokhov
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:37184ddd-82b1-4c75-b6e9-6a08cac78a6c@default">
      <pre wrap="">Ok, looks fine.

----- <a class="moz-txt-link-abbreviated" href="mailto:krishna.addepalli@oracle.com">krishna.addepalli@oracle.com</a> wrote:

</pre>
      <blockquote type="cite">
        <pre wrap="">Hi Sergey,

I checked with Thread.MAX_PRIORITY - 1, and found that it still leads
to OOM exception, although it takes longer to get to that condition.

Thanks,
Krishna

-----Original Message-----
From: Sergey Bylokhov 
Sent: Tuesday, August 29, 2017 6:19 AM
To: Krishna Addepalli <a class="moz-txt-link-rfc2396E" href="mailto:krishna.addepalli@oracle.com"><krishna.addepalli@oracle.com></a>
Cc: <a class="moz-txt-link-abbreviated" href="mailto:awt-dev@openjdk.java.net">awt-dev@openjdk.java.net</a>
Subject: Re: <AWT Dev> [10][JDK-8175015] FileSystemView.isDrive(File)
memory leak on "C:\" file reference

Hi, Krishna.
Did you check other priorities like Thread.MAX_PRIORITY-1/2/3?  

----- <a class="moz-txt-link-abbreviated" href="mailto:krishna.addepalli@oracle.com">krishna.addepalli@oracle.com</a> wrote:

</pre>
        <blockquote type="cite">
          <pre wrap="">Hi Sergey,

The root cause for the OOM exception is due to mismatched thread 
priority. When folders are listed, each folder/file is associated
</pre>
        </blockquote>
        <pre wrap="">with 
</pre>
        <blockquote type="cite">
          <pre wrap="">a COM object, that is wrapped by the Java ShellFolder object. Now, 
when the ShellFolder object needs to be deleted, the underlying COM
</pre>
        </blockquote>
        <pre wrap="">
</pre>
        <blockquote type="cite">
          <pre wrap="">object should be released in ComThread, whose priority is normal.
Whereas, the java2D.Disposer thread runs at highest priority, but it
</pre>
        </blockquote>
        <pre wrap="">
</pre>
        <blockquote type="cite">
          <pre wrap="">is unable to clean up the piled up objects, which eventually leads
</pre>
        </blockquote>
        <pre wrap="">to 
</pre>
        <blockquote type="cite">
          <pre wrap="">this exception.

I have added a fix for this as well, and created a new webrev as
below:

<a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~pkbalakr/Krishna/8175015/webrev01/">http://cr.openjdk.java.net/~pkbalakr/Krishna/8175015/webrev01/</a>

Thanks,
Krishna

-----Original Message-----
From: Sergey Bylokhov
Sent: Wednesday, August 9, 2017 5:16 AM
To: Krishna Addepalli <a class="moz-txt-link-rfc2396E" href="mailto:krishna.addepalli@oracle.com"><krishna.addepalli@oracle.com></a>; 
<a class="moz-txt-link-abbreviated" href="mailto:awt-dev@openjdk.java.net">awt-dev@openjdk.java.net</a>
Subject: Re: <AWT Dev> [10][JDK-8175015]
</pre>
        </blockquote>
        <pre wrap="">FileSystemView.isDrive(File) 
</pre>
        <blockquote type="cite">
          <pre wrap="">memory leak on "C:\" file reference

Hi, Krishna.> The problem is internally, 
Win32ShellFolderManager2.java, the function
</pre>
          <blockquote type="cite">
            <pre wrap="">"isFileSystemRoot" is called, which lists the contents of all the
</pre>
          </blockquote>
          <pre wrap="">root
</pre>
          <blockquote type="cite">
            <pre wrap="">drives, in addition to including them. It also includes the hidden
</pre>
          </blockquote>
        </blockquote>
        <pre wrap="">
</pre>
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">files. For each file present, it is wrapped with a
</pre>
          </blockquote>
          <pre wrap="">"Win32ShellFolder2"
</pre>
          <blockquote type="cite">
            <pre wrap="">object. So, for each query, it will list the files in the drives,
</pre>
          </blockquote>
          <pre wrap="">and
</pre>
          <blockquote type="cite">
            <pre wrap="">throws them away, which is leading to both memory consumption as
</pre>
          </blockquote>
          <pre wrap="">well
</pre>
          <blockquote type="cite">
            <pre wrap="">as slow performance.
</pre>
          </blockquote>
          <pre wrap="">
If for each query we list the files in the drive and *throws* all of
</pre>
        </blockquote>
        <pre wrap="">
</pre>
        <blockquote type="cite">
          <pre wrap="">them away, then why(and where) we have a memory leak and as a result
</pre>
        </blockquote>
        <pre wrap="">
</pre>
        <blockquote type="cite">
          <pre wrap="">OOM.


--
Best regards, Sergey.
</pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>