下面是我的javaactvemq进程的配置,其中xmx是15360m,但是当我看到使用glance的进程内存使用情况时,我看到rss41.8gb和vss51.6gb。格雷普总共给我54059348k。我不确定activemq中发生了什么导致了如此多的内存被利用。堆的使用率很低,只有60%。
在pmap的输出中,我看到很多非块。请查看附件pmap输出
/XXXXX 111922 1 22 14:30 pts/0 00:04:26
/u/users/user/jdk1.7.0_71/bin/java -Xms1024M -Xmx15360M -Xss512K
-XX:+UseG1GC -XX:NewRatio=4 -XX:InitiatingHeapOccupancyPercent=45
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/x/logs/AMQGC.log
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=20M
-Djava.util.logging.config.file=logging.properties
-Djava.security.auth.login.config=/u/users/user/POSInterfaces/apache-activemq-5.13.2//conf/login.config
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote
-Djava.awt.headless=true
-Djava.io.tmpdir=/u/users/user/POSInterfaces/apache-activemq-5.13.2//tmp
-Dactivemq.classpath=/u/users/user/POSInterfaces/apache-activemq-5.13.2//conf:/u/users/user/POSInterfaces/apache-activemq-5.13.2//../lib/:
-Dactivemq.home=/u/users/user/POSInterfaces/apache-activemq-5.13.2/
-Dactivemq.base=/u/users/user/POSInterfaces/apache-activemq-5.13.2/
-Dactivemq.conf=/u/users/user/POSInterfaces/apache-activemq-5.13.2//conf
-Dactivemq.data=/u/users/user/POSInterfaces/apache-activemq-5.13.2//data
-jar /u/users/user/POSInterfaces/apache-activemq-5.13.2//bin/activemq.jar
start/
请在此处查找pmap文件
3条答案
按热度按时间ttisahbt1#
要分析应用程序的内存使用情况(不仅包括java堆),可以使用以下答案。
你的anon积木大多大小相近。在大多数情况下,很多人都不谈论线程。如果activemq中有很多目的地,那么可以有很多线程。但anon块的大小与线程堆栈的大小并不接近。所以我想可能不是线。
请注意,对于activemq,15gb是非常高的,有时对于java也是如此,这对gc的影响非常大。您可以在这里和这里阅读如何为系统内存使用配置activemq。
hm2xizp92#
我可以确认activemq不能使用比您用-xmx配置的更多的jvm堆。activemq是100%java,因此代理不会使用jvm以外的堆内存。
要了解实际使用了多少java堆,请查询jvm的jmx统计信息,它应该始终保持在配置的限制内。
我不熟悉pmap,所以我不能真正评论这一部分,但我想知道最高命令给你什么数字?
o0lyfsai3#
我从rss中得知,您运行的是unix—不确定这是不是linux。
我想知道您是否应该关注pss(比例集大小)而不是rss(驻留集大小)-请看这个关于内存的unix和linux问题-我发现smem是评估实际内存使用情况的一个很好的工具。
例如-对于我的服务器上的activemq进程(使用-xmx512m设置)
i、 pmap给了我一个比smempss(甚至rss)更高的内存(3gb)(约200m)