编程语言
首页 > 编程语言> > Java最大堆大小和OS顶部输出

Java最大堆大小和OS顶部输出

作者:互联网

我正在尝试运行jar文件,但我想处理jvm最大堆大小.大小我正在使用-Xmx80m参数来设置最大磁头大小80MB.

我在Linux操作系统上使用“ top”命令来监视应用程序的内存分配,我很惊讶jvm使用的内存比我用-Xmx参数(java -Xmx80m -jar myapp.jar)指定的更多.更具体地说,从我的最高输出

签证:257m
分辨率:109m

我认为RES应该最大为80mb,如果我的应用程序需要80mb以上,jvm将抛出异常“内存不足”(或类似的东西)

在我的应用程序中,我正在使用一个外部库.除了我用param指定的堆之外,此库是否使用自己的内存?

在任何情况下,如何限制jvm的内存使用量,以便不克服我用参数设置的内容?

更新:
使用ulimit(unix命令)限制JVM使用的资源是否是一个好的解决方案?

我正在使用:

Java版本“ 1.7.0_02”
Java(TM)SE运行时环境(内部版本1.7.0_02-b13)
Java HotSpot(TM)服务器VM(内部版本22.0-b10,混合模式)

在软呢帽上8件

解决方法:

您不应期望-Xmx会对JVM使用的总内存施加硬约束.

-Xmx限制了Java堆的大小. Java堆之外的任何内存均不受此限制.这包括代码,类元数据,常量池等.

您可以调整的另一件事是永久空间的大小(-XX:MaxPermSize),因为它不包含在-Xmx中.

标签:jvm,heap-memory,java
来源: https://codeday.me/bug/20191101/1986593.html