Aaron-He opened a new issue #1719: Switching from CMS to G1
URL: https://github.com/apache/rocketmq/issues/1719
 
 
   Now, the jvm Namesrv running on uses CMS, while the jvm Broker running on 
uses G1.
   Maybe we could switch from CMS to G1, reasons are as follows:
   
   1. Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely 
be removed in a future release.
   2. As #1688 mentioned, Namesrv cannot run on JDK 11, the reason is above. 
But G1 was introduced in Java 7, and becomes default GC in the higher version 
JDKs(after version JDK 9).
   3. The G1 can collect both the young and the old generation.
   ...
   
   Undeniably, the G1 doesn’t perform well with small heaps. However, the heap 
memory size Namesrv uses is 4G, it may not be small. Also, full GCs can be 
triggered when humongous objects (objects over 50% of the size of a region) 
can’t be allocated due to a lack of space(no continuous regions available). 
   However, 4G heap Memory as an example, the G1 can still perform well. 
According to best tuning practices( heap memory is divided into about 2000 
regions), we can set one region 2M. Use jmap tool to get heap dump file in the 
test environment(2m-2s-async brokers, 2 namesrv), use visualvm tool to analysis 
the file, the 10 biggest objects are as follows:
   
   Class Name|Retained Heap
   ------|-------------------
   sun.misc.Launcher$ExtClassLoader#1 | 1,223,336
   java.util.Vector#45|658,138
   java.lang.Object[]#59741|658,102
   java.util.concurrent.ConcurrentHashMap#75809|369,344
   java.util.concurrent.ConcurrentHashMap$Node[]#18955|369,244
   class io.netty.buffer.ByteBufUtil$HexUtil|358,480
   io.netty.buffer.PoolThreadCache#1|339,839
   io.netty.buffer.PoolThreadCache#16|339,758
   io.netty.buffer.PoolThreadCache#2|339,434
   io.netty.buffer.PoolThreadCache#6|339,434
   
   In summary, there is no performance penalty for switching from CMS to G1.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to