How to improve garbage collection performance in QIE when running Java 8

0 votes
asked Mar 10, 2016 by ben-s-7515 (12,640 points)
edited Mar 10, 2016 by ben-s-7515
What are my options for performance tuning in Java 8?  When I run QIE in Java 7 eveything seems to run faster than Java 8.

1 Answer

+1 vote
Best answer

QIE has optimization parameters built in to its launcher that modify the heap space for performance when running on windows.  This optimization was done for Java6 and Java7, but has an adverse effect on the performance of Java8.  QIE has been updated to remove these, but if your instance of QIE was installed prior to the 2.0.43 release, then you will need to download the windows installer from and re-install QIE to get the updated launcher installed.  This will not remove any of your existing configuration or messages, but will replace the launcher with the updated version.

Once you are running the latest launcher application, then you can look at tuning your Java8 installation to your hardware and memory configurations.  Java8 ships with 4 garbage collectors.

1) The Parallel / Throughput Collector
  - This is the default garbage collector for Java8.
  - All JVM threads are paused while it does its collection work.

2) The Serial Collector
  - Activate by adding '-XX:+UseSerialGC' to your java startup options.
  - Pauses all threads whenever it is running.
  - Mostly used for single-threaded applications running in a 32-bit environment.

3) The CMS Collector
  - Activate by adding '-XX:+UseParNewGC' to your java startup options.
  - Multiple threads run to mark objects that can be recycled.
  - Only pauses threads when it is running initial marking of root objects, or when the application changes the state of the heap while the sweep is in progress.
  - Uses a bit more CPU to provide continuous throughput without pausing threads.

4) The G1 Collector
  - Activate by adding '-XX:+UseG1GC' and '-XX:MaxGCPauseMillis=200' to your java startup options.
  - Introduced to avoid long pauses while sweeping large memory heaps (greater than 4 gig).
  - Oracle is proposing that this become the new default garbage collector starting with Java9.
  - More information on this garbage collector can be found here.

Qvera has tested all of these garbage collectors with QIE and has found that the CMS Collector and the G1 Collectors give you the best overall performance.  Choosing one of these depends on your hardware chipset and how much memory you have allocated to QIE.  The G1 Collector was introduced to improve performance of the JVM when running on large memory heaps (over 4 gig).  If you are running QIE with over 4 gig, then it would probably be best if you use the G1 Collector.  The CMS Collector is an improved version of the default Parallel / Throughput Collector and when you have smaller memory heaps it will perform better.

The best way to know what collector to use is with testing, due to the fact that the computer chipset and amount of memory allocated to QIE can affect the overall performance of the garbage collector.

answered Mar 10, 2016 by ben-s-7515 (12,640 points)
selected Mar 10, 2016 by rich-c-2789