Chinaunix首页 | 论坛 | 博客
  • 博客访问: 52879
  • 博文数量: 11
  • 博客积分: 185
  • 博客等级: 入伍新兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-09 11:07
文章分类

全部博文(11)

文章存档

2020年(1)

2013年(10)

我的朋友

分类: Java

2013-01-09 12:32:30

原文在这里:
这是一个众所周知的问题,从理论上将,应该很容易收缩,因为javagc的模型是,

内存可以在堆上移动,因此内存碎片没有问题。但是不幸的是,

JVM在默认情况下,很少收缩。一旦堆增长,很少收缩。
    事实证明,Sun JVM可以控制盒改善收缩行为。
有一个参数""-XX:MaxHeapFreeRatio=",意味着
多少堆上空间是空闲的,超过此设定,就开始收缩;
另外一个参数"-XX:MinHeapFreeRatio=",意味着
堆上应该保留多少空闲空间,低于此设定,停止收缩。

缺省的设定是70%和40%,这意味着JVM收缩行为时空闲内存超过70%
而收缩后,还有40%的空闲空间。举个例子:
如果JVM的堆增长到300M的空间,当前只用到100M,那么不会执行收缩行为
(因为仅有66%是空闲的),而当只有90M被使用时,收缩行为
才会执行,但执行后,JVM仍然占用150M(因为需要保持40%的空闲空间)

应该注意的是,如果你要调整降低这个百分比,JVM的优秀GC是依赖于
大量的自由堆空间。为保持好的性能,不只是最小内存使用,你还可以
调整GC的其他参数。推荐一个参数组合:

  1. -XX:NewRatio=2 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=30


 

但你的好处或许会有所不同。

阅读(1392) | 评论(0) | 转发(0) |
0

上一篇:Bottle beaker twisted

下一篇:CQL 3.0 列查询

给主人留下些什么吧!~~