切换到宽版
  • 3100阅读
  • 0回复

如何获得JVM的最大可用内存 [复制链接]

上一主题 下一主题
离线猫仙
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2017-09-06
在命令行下用 java -Xmx1200m -XX:MaxPermSize=60m -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息。
最后得到的虚拟机实际分配到的
总内存大小=堆内存+非堆内存
1200m:为堆内存大小,如果不指定后者参数则有最大数限制,网上很多文章认为这就是JVM内存,-Xmx为设置最大堆内存
60m:为非堆内存大小,-XX:MaxPermSize实为永久域内存,在堆内存之外,属于非堆内存部分,jdk1.5我测了好像默认为62m,即得到非堆部分默认内存)

Sun HotSpot 1.4.1使用分代收集器,它把堆分为三个主要的域:新域、旧域以及永久域。Sun JVM生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。在永久域中Sun JVM则存储class和method对象。就配置而言,永久域是一个独立域并且不认为是堆的一部分。

实际发现版本上有细微差别的JDK最大容许内存值都不尽相同,因此在实际的应用中还是要自己试验一下看到底内存能达到什么样的值。

通过这个表想说明的是,如果你的机器的内存太多的话,只能通过多运行几个实例来提供机器的利用率了,例如跑Tomcat,你可以多装几 个Tomcat并 做集群,依此类推。
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个