<p>I am using jProfiler to find memory leaks in a Java swing application. I have identified instances of a JFrame which keeps growing in count.</p>

<p>This frame is opened, and then closed.</p>

<p>Using jProfiler, and viewing the Paths to GC Root there is only one reference, 'JNI Global reference'.</p>

<p>What does this mean? Why is it hanging on to each instance of the frame?</p>

Wikipedia has a good overview of
Java Native Interface
, essentially it allows communication between Java and native operating system libraries writen in other languages.
JNI global references are prone to memory leaks, as they are not automatically garbage collected, and the programmer must explicitly free them.  If you are not writing any JNI code yourself, it is possible that the library you are using has a memory leak.
edit
here
is a bit more info on local vs. global references, and why global references are used (and how they should be freed)