编程语言
首页 > 编程语言> > java – 新TLAB中的分配与TLAB外部的分配

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