Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I disable Java garbage collector?

We have a PHP webapp that calls a Java binary to produce a PDF report (with JasperReports). The Java binary outputs the PDF to standard output and exits; the PHP then sends the PDF to browser. This Java command lasts about 3 to 6 seconds, and I think when it lasts 6 second it's because the GC kicks in. I would like to disable the GC because anyway when the command exits all memory is returned.

I would like to know how to disable it for Java 1.4.2 and for Java 1.6.0 because we are currently testing both JVM to see which performs faster..

like image 338
Nelson Avatar asked May 28 '10 07:05

Nelson


People also ask

Can we control garbage collector Java?

The best approach to tuning Java garbage collection is setting flags on the JVM. Flags can adjust the garbage collector to be used (e.g. Serial, G1, etc.), the initial and maximum size of the heap, the size of the heap sections (e.g. Young Generation, Old Generation), and more.

Why is Java automatic garbage collector?

The advantages of Garbage Collection in Java are: It makes java memory-efficient because the garbage collector removes the unreferenced objects from heap memory. It is automatically done by the garbage collector(a part of JVM), so we don't need extra effort.

How do I turn off verbose GC?

Under the Additional Properties section, click Java Virtual Machine. Uncheck the Verbose garbage collection check box. In the Generic JVM Arguments field, enter the non-standard JVM command-line options that enable the desired Garbage Collector data logging behavior.

What is the default Java garbage collector?

G1 Garbage Collector is the default garbage collection of Java 9. G1 collector replaced the CMS collector since it's more performance efficient.


2 Answers

It sounds like you are trying to save time, but going about it the wrong way. The time saved in disabling garbage collection would be trivial (for a single task) compared to the time taken to launch and shutdown the java process. You might want to consider having a java process launch that you can ask multiple times to do the work you require if run-time performance is your goal.

like image 166
Paul Jowett Avatar answered Sep 23 '22 23:09

Paul Jowett


There is no way to disable garbage collection entirely. Garbage collection is only run when the JVM runs out of space, so you could give the program more memory. Add these command line options to the Java command

-Xmx256M -Xms256M 

This gives the program 256Mb of ram (the default is 64Mb). Garbage collection will not take 3 seconds for a default size JVM though, so you might want to investigate more closely what the program is doing. Yourkit profiler is very useful for figuring out what is taking a long time.

like image 39
Ceilingfish Avatar answered Sep 21 '22 23:09

Ceilingfish