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
