Wan*_*now 43 java performance garbage-collection jvm jmc
JDK中的Java Mission Control工具提供有关新TLAB中的对象分配和TLAB外部分配的统计信息.(它在Memory/Allocations下).这些统计数据有什么意义,哪些对应用程序的性能有好处?如果在TLAB之外分配一些对象,我是否应该担心?如果是,我该怎么办呢?
Kla*_*ara 76
TLAB是线程本地分配缓冲区.在HotSpot中分配对象的正常方式是在TLAB中.TLAB分配可以在不与其他线程同步的情况下完成,因为分配缓冲区是线程本地,只有在获取新的TLAB时才需要同步.
因此,理想的情况是尽可能在TLAB中完成分配.
一些对象将在TLAB外部分配,例如大对象.只要TLAB之外的分配与新TLAB中的分配的百分比较低,就没有什么可担心的.
在每个线程的执行过程中,TLAB会动态调整大小.因此,如果一个线程分配很多,它从堆中获取的新TLAB的大小将会增加.例如,如果需要,可以尝试将标志-XX:MinTLABSize
设置为设置最小TLAB大小
-XX:MinTLABSize=4k
答案由我的同事David Lindholm提供:)
归档时间: |
|
查看次数: |
9923 次 |
最近记录: |