java – 新TLAB中的分配与TLAB外部的分配
作者:互联网
JDK中的Java Mission Control工具提供有关新TLAB中的对象分配和TLAB外部分配的统计信息. (它在Memory / Allocations下).这些统计数据有什么意义,哪些对应用程序的性能有好处?如果在TLAB之外分配一些对象,我是否应该担心?如果是,我该怎么办呢?
解决方法:
TLAB是线程本地分配缓冲区.在HotSpot中分配对象的正常方式是在TLAB中. TLAB分配可以在不与其他线程同步的情况下完成,因为分配缓冲区是线程本地,只有在获取新的TLAB时才需要同步.
因此,理想的情况是尽可能在TLAB中完成分配.
一些对象将在TLAB外部分配,例如大对象.只要TLAB之外的分配与新TLAB中的分配的百分比较低,就没有什么可担心的.
在每个线程的执行过程中,TLAB会动态调整大小.因此,如果一个线程分配很多,它从堆中获取的新TLAB的大小将会增加.如果需要,可以尝试设置标志-XX:MinTLABSize以设置最小TLAB大小
-XX:MinTLABSize = 4K
答案由我的同事David Lindholm提供:)
标签:java,performance,garbage-collection,jvm,jmc 来源: https://codeday.me/bug/20191004/1851733.html