Jboss 平均TLAB大小大于平均对象大小

Jboss 平均TLAB大小大于平均对象大小,jboss,jvm,Jboss,Jvm,我对TLAB和对象有很大的怀疑。 就我所研究的JVM中的TLAB而言,对象在创建时应该优先保存在TLAB中,直到年轻一代,对吗? 但是,如图所示,我的应用程序的“平均TLAB大小”为20,13KB,而“平均对象大小”(TLAB外部)为11,25KB 据我所知,这些对象应该保存到TLAB中,除非它们大于TLAB。我担心我们有很多堆碎片,正如您所看到的,我们的“为TLAB分配的总内存”为52,90 MB,而“为对象分配的总内存”为1,27 MB。运行Java任务控制只需5分钟,就浪费了51,63MB

我对TLAB和对象有很大的怀疑。 就我所研究的JVM中的TLAB而言,对象在创建时应该优先保存在TLAB中,直到年轻一代,对吗? 但是,如图所示,我的应用程序的“平均TLAB大小”为20,13KB,而“平均对象大小”(TLAB外部)为11,25KB

据我所知,这些对象应该保存到TLAB中,除非它们大于TLAB。我担心我们有很多堆碎片,正如您所看到的,我们的“为TLAB分配的总内存”为52,90 MB,而“为对象分配的总内存”为1,27 MB。运行Java任务控制只需5分钟,就浪费了51,63MB

我的应用程序、JVM或JBoss是否有严重问题?或者这是一种误解

提前谢谢


在给定的图片中,我看不到任何问题。1,27 MB是在TLAB外部分配的OBEJCT的大小。从TLAB大小中减去它是没有意义的。问题是:如果在TLAB之外分配的对象的平均大小为11,25KB,而TLAB的平均大小为20,13KB,这不是错的吗?因为一个11KB的对象应该在一个20KB的TLAB中,还是我错了?想象一下一个20KB的半满TLAB。它已经分配了10KB。显然,11KB的对象无法放入剩余空间,因此它将被分配到TLAB外部(剩余的TLAB空间太大,无法丢弃)。请看,但是,我如何知道我有占10KB的半满对象?假设我有100个平均大小为11KB的对象和大小为20KB的TLAB。每个都应该有1个TLAB,对吗?我的假设是,如果我创建的对象大小为11KB,那么应该创建新的TLAB,还是我错了?