我的java actvemq进程配置如下,其中Xmx为15360M 但是当我看到内存的进程使用情况时,我看到了RSS 41.8gb 和VSS 51.6gb。 pmap | grep total给了我总计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文件here
答案 0 :(得分:0)
我可以确认ActiveMQ无法使用比使用-Xmx配置的更多JVM堆。 ActiveMQ是100%Java,因此代理不会使用除JVM之外的其他堆内存。
要了解实际使用了多少Java堆,查询JVM的JMX统计信息,它应始终保持在配置的限制内。
我对pmap不熟悉,所以我不能对那部分发表评论,但我想知道top命令给你的数字是多少?
答案 1 :(得分:0)
我从你在Unix上运行的RSS引用它 - 不确定那是不是Linux。
我想知道你是否应该关注PSS(比例集大小)而不是RSS(常驻集大小) - 请参阅this Unix & Linux Question on memory - 我发现smem是一个很好的评估工具实际内存使用情况。
例如 - 对于我服务器上的ActiveMQ进程(使用-Xmx512m设置)
public enum DAY {
SUNDAY("sunday"),
MONDAY("monday"),
TUESDAY("tuesday"),
UNKNOWN("unknown");
private final String value;
DAY(final String value) {
this.value = value;
}
private static final Map<String, DAY> VALUE_TO_TYPE = new HashMap<>();
static {
Stream.of(DAY.values()).forEach(type -> VALUE_TO_TYPE.put(type.value, type));
}
public String value() {
return value;
}
public static DAY fromValue(final String value) {
final DAY day = VALUE_TO_TYPE.get(value);
return day != null ? day : UNKNOWN;
}
}
即。 pmap给我一个比涂抹PSS(实际上是RSS)(~200M)更高的记忆力(3GB)
答案 2 :(得分:0)