关于JVM参数设置

Sun Hotspot JVM Version: 1.3.1+ 版本进行了很多优化,也克服了32位操作系统上2G 内存的限制。在设置JVM参数的时候,需要权衡throughputfootprint两个重要的考量。

 

JVM内存模型中分两大块,一块是New Generation, 另一块是Old Generation. New Generation中,有一个叫Eden的空间,主要是用来存放新生的对象,还有两个Survivor Spaces, 它们用来存放每次垃圾回收后存活下来的对象。在Old Generation中,主要存放应用程序中生命周期长的内存对象,还有个Permanent Generation,主要用来放JVM自己的反射对象,比如类对象和方法对象等。

 

New Generation块中,垃圾回收一般用Copying的算法,速度快。每次GC的时候,存活下来的对象首先由Eden拷贝到某个Survivor Space, Survivor Space空间满了后, 剩下的live对象就被直接拷贝到Old Generation中去。因此,每次GC后,Eden内存块会被清空。在Old Generation块中,垃圾回收一般用mark-compact的算法,速度慢些,但减少内存要求。

 

JVM参数很多,但最常见的是以下一些,具体可以参考JVM白皮书。NewSize, MaxNewSize, NewRatio, and SurvivorRatio是用来调整New Generation的。PermSizeMaxPermSize是用来调整Permanent Generation. 还有一组就是比较熟悉的 XmxXms, 它们用来控制整个JVMheap size. 一般来说我们把XmxXms设置成相同数值,JVM 能够aggressive占用分配给它的内存. 这样一来,我们可以有如下一个等式:

Xmx = Xms = Eden + 2 x Survivor Space + Old Generation

TotalHeapSize = Xmx setting + PermSize

 

关于JVM的优化,要根据具体应用程序来考量throughputfootprint.并不是Heap size越大越好, 因为Heap size大了, GC的次数会减少, 但每次运行的开销会增加。我们可以参考http://java.sun.com http://www.javaperformancetuning.com上的文章.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值