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