为什么编程上交作业时多了这个plc语句表编程手册就超出内存限制?它很大吗?为什么大

为什么虚拟机占用的实际内存超出了 -Xmx 设置的最大值 - 讨论 - 高级语言虚拟机 - ITeye群组
JBoss服务器,启动参数中设置了最大堆内存为3072M,运行一段时间后在系统任务管理器看到相应的java.exe进程占用了5G内存
因为-Xmx只用于指定Java heap的大小。JVM还有许多其它东西需要占用内存,同一进程内别的native库也可能占用内存。
您看的“占用内存量”是进程的private working set,这包括该进程所有独占(不与其它进程共享)的内存,不只是Java heap。
楼主可以参考一下JavaOne 2010的一个IBM的演讲:
虽然这个演讲的例子用的是IBM JVM,但其原理也适用与Oracle JDK / OpenJDK的HotSpot VM。
RednaxelaFX 写道因为-Xmx只用于指定Java heap的大小。JVM还有许多其它东西需要占用内存,同一进程内别的native库也可能占用内存。
您看的“占用内存量”是进程的private working set,这包括该进程所有独占(不与其它进程共享)的内存,不只是Java heap。
楼主可以参考一下JavaOne 2010的一个IBM的演讲:
虽然这个演讲的例子用的是IBM JVM,但其原理也适用与Oracle JDK / OpenJDK的HotSpot VM。
感谢RednaxelaFX的解答,你的意思我基本理解了,只是除去heap之还占了2G多的内存,这个开销可不少,有什么工具可以查看这些内存具体用在哪些地方了吗?
louhaiyun 写道除去heap之还占了2G多的内存,这个开销可不少,有什么工具可以查看这些内存具体用在哪些地方了吗?如果是linux平台的话,可以用pmap -x pid看一下或者直接看/proc/pid/smaps文件更详细windows下可以试试Procmon?看到有人说这个是windows上的pmap,但是我没用过基本上就是线程栈空间,jar文件的映射,动态库的代码段,数据段以及应用打开的文件的缓存这几类吧
相关资源推荐2259被浏览186852分享邀请回答24721 条评论分享收藏感谢收起en.wikipedia.org/wiki/Ternary_computer[2]
[4] [5] [6]
[7] ——呃,这答案在草稿里呆了七个月,虽然仍旧觉得不够那个,可是再不写完,就要过年了……1.3K56 条评论分享收藏感谢收起查看更多回答

我要回帖

更多关于 编程if语句 的文章

 

随机推荐