I understand that the JVM needs some overhead, but these numbers are 
surprisingly large, about half the total reported heap size on these two 
examples. I could understand a constant overhead, but here are two examples of 
the same program running, one instance with an overhead of 67M and the other 
with an overhead of 163M. If most of the space was due to, say, symbol tables 
or compiled JIT code I would expect the two instances to be close. They should 
also have a similar number of active threads (and thus thread stack space) 
wouldn't you think?

The real question is, how can I tell exactly what all this unreported JVM 
overhead is being used for. Through JMX perhaps, or some JVM debugging options?

(I read once that intern'd strings were kept "off book" so that's one suspect. 
Permanent heap space is another, though it would make no sense to me for that 
no to be included in the total heap space figure. File handles should be small 
so they don't seem likely to account for much of the difference either.)

> -----Original Message-----
> Message: 4
> Date: Fri, 15 Apr 2005 13:35:00 -0400
> From: Christopher L Merrill <[EMAIL PROTECTED]>
>
> These methods report the total/free space on the JVM internal heap - which
> is what gets used up when you new() an object (or load classes). The JVM
> itself and memory allocated by the native parts (file handles, sockets
> and other OS resources) are not reported by those methods, either.
>
> All Java programs share a similar discrepancy.
>

_______________________________________________
Juglist mailing list
[email protected]
http://trijug.org/mailman/listinfo/juglist_trijug.org

Reply via email to