jvm 在我的tomcat pid上运行jmap的说明

w8f9ii69  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(158)

我修改了我的catalina.sh,并在顶部添加了以下内容:

export CATALINA_OPTS="-Xms512m -Xmx1500m"

我的服务器上有4GB的内存,我正在进行负载测试,所以我想把所有的东西都交给tomcat。

我应该调整哪些其他JVM设置以最大化每秒请求数?

PerMem也很重要吗?
对于下面的jmap输出,我有点困惑。
我将XMX设置为1500MEGS,它似乎已经更新了,因为我看到“Maxheapsize”是1500M。
但是它在哪里显示我已经使用了多少堆,还有多少是空闲的呢?

我看到堆使用率为63mb(eden),这是什么?

w8biq8rn

w8biq8rn1#

热点(read sun)堆被拆分为几个部分,因此当您指定-Xmx时,实际上是为整个堆而不是它的一部分设置最大值。
Eden是整个堆的一小部分,它保持很小的规模是为了确保应用程序在收集过程中不会长时间停止。所有新的对象(合适的)都会进入Eden开始,如果它们不是垃圾,它们会被提升到幸存空间或占有空间。
幸存者(To/From空间)是GC试图获取可能是垃圾的对象的地方,但在Eden收集过程中不能很快解决,有两个作为缓冲区的幸存者空间,一个被GC填充,另一个被清空,如果你观察图表,你会看到这两个空间在使用中翻转。
使用权是长期对象驻留的地方,这个堆通常很大,并且由与eden不同的算法收集。
Perm与堆的其他部分有些分离,它是常量字符串(任何被“暂存”的字符串)和类字节码所在的地方。你很少需要调整它,通常只需要为大型应用程序或自动生成代码的应用程序(很差)增加它。
如果没有暂停时间,我真的不能说您的JVM设置是否完全正确,但是从堆大小来看,您似乎使用了大约1.2GB的分配。(人们经常带着大量的旗帜进城,在您向自己证明需要这些标志之前,请将其保留)
您的目标是Web应用程序的低延迟,因此使用ConcurrentMarkSweep作为tenage收集器是明智的选择。

相关问题