RE: FW: Garbage collection issues in GCJ
"Ben Keppler" <[email protected]>
| Newsgroups | gmane.comp.gcc.java.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi David, I understood your meaning to be what you reiterated in response to Florian. In fact, in our testing with the Sun JVM, we obtained the performance characteristics we wanted by turning on the incremental GC and limiting the size of the eden space so that garbage collections take as little time as possible. Because we are on a single-core system without hyperthreading, even non-world-stopping garbage collections must be limited in duration. As far as I can tell, the only possible option with GCJ and the Boehm GC is limiting the total size of the heap to reduce the pause. However, I don't think even that is going to be adequate. If GCJ were up on the latest version of Boehm GC and the incremental mode worked, that might solve our problem. At this point I think we may be forced into using the JVM. Ben Keppler, Software Engineer Trident Micro Systems E-mail: [email protected] * Voice: 828.684.7474 * Fax: 8282.684.7874 -----Original Message----- From: David Daney [mailto:[email protected]] Sent: Monday, January 24, 2011 12:45 PM To: Florian Weimer Cc: Ben Keppler; [email protected] Subject: Re: FW: Garbage collection issues in GCJ On 01/22/2011 01:53 PM, Florian Weimer wrote: > * Ben Keppler: > >> Thanks for your response. We have been unable to find documentation >> detailing how to change the GC configuration including knobs for setting >> the max heap size. > > GCJ allocates as much memory as your application needs. I think what > David meant was that you should change your application to put less > data into the Java heap (either by using the C heap, or by splitting > it into multiple processes). > No, that is not what I meant at all. At some point in any non-trivial program's execution, there will be a memory allocation request that cannot be met from the existing pools of free memory. At this point the runtime memory allocator must make a decision. Should it run a garbage collection cycle to try to free up some existing memory, or should it get more memory from the operating system. My suggestion was to adjust the policy parameters such that it chooses the garbage collection option more often. This results in a smaller total memory footprint, and thus faster garbage collection cycles. The trade off is that you end up doing more garbage collection and less real work. This may be acceptable though, if latency is important. David Daney