Memory leak in 1.5.0 JVM
Mika Nystrom
mika at async.caltech.edu
Fri Feb 22 10:30:21 UTC 2008
Hi Nick,
Thanks for the explanation! I guess I can just chalk up another
reason on my list of reasons "why I would never use Java for anything
I care about [given the choice]". Better garbage collectors were
described by Dijkstra et al... now 30 years ago.
This is what my NOP-program does after allocating a gigabyte (only
takes a couple of minutes on a Q6600):
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:574)
at Leakq.main(Leakq.java:14)
Mika
Nick Johnson writes:
>On Thu, 21 Feb 2008, Mika Nystrom wrote:
>
>> Out-running the garbage collector? I'm not used to Java, but in
>> Modula-3, the garbage collector gets called when you allocate memory,
>> is that not how it works in Java?
>
>In a word, no. Garbage collection in Java is asynchronous. In the Sun
>JVM there are several different garbage collection strategies. The
>default strategy uses multiple "generations"-- a "new" generation for
>short-lived objects; those objects that live through a new generation
>collection get promoted to one of many "survivor" spaces, and those that
survive collection there (either because of time or exhausting the size of
>the survivor space) get promoted to the "tenured" or "old" generation.
>Then there's a "permanent" generation for classes and other stuff.
>
>If you just sit and watch the memory size of a JVM process, it might
>appear to be "leaking" memory, but what's happening under the hood is far
>more complicated than that. The JVM will also grow to accomodate the
>amount of memory it has needed to allocate, but won't necessarily -shrink-
>again once those objects are garbage collected. In a long-running
>process, chances are that if a program needed 256M once, it's going to
>need it again.
>
>To get a real good idea of what's going on under the hood, look at tools
>like jvmstat and visualgc.
>
>This document will give you a much more detailed view than my rough
>outline here:
>
> http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
>
> Nick
>
>
>--
>"Courage isn't just a matter of not being frightened, you know. It's being
> afraid and doing what you have to do anyway."
> Doctor Who - Planet of the Daleks
>This message has been brought to you by Nick Johnson 2.3b1 and the number 6.
>http://healerNick.com/ http://morons.org/ http://spatula.net/
More information about the freebsd-java
mailing list