Java参数-Xms和-Xmx的区别
java内存堆栈不够用时我们会寻求java参数-Xms和-Xmx的帮助,网上也有许多前辈给出了例子,但很多人喜欢把-Xms和-Xmx的值设置成一样的,甚至我还见过有吧-Xms设的比-Xmx还要大(-Xms是最小值,-Xmx是最大值)。
一开始我也不知道这两个值设成一样会有什么问题,但是我在作项目http://youmonitor.us/ 时发现,当我把-Xms和-Xmx设置成一样时,java会不断地吃内存。起先不知道怎么回事,经过测试后发现,原来java的垃圾回收器在内存使用达到-Xms值的时候才会开始回收,如果两个值一样,那就意味着,只有当java使用完所有内存时才会回收垃圾,这样一来内存当然不停的涨。希望我的教训对各位有所帮助。 1 楼 tvjody 2007-09-03 一般设置为
-Xms128m
-Xmx512m 2 楼 greatqiao 2007-09-05 以前只知道最大值于最小值,今天知道最小值于垃圾回收的原理了。受教了。 3 楼 dennis_zane 2007-09-05 不同厂家的jdk垃圾回收算法不一样,不能一概而论 4 楼 galaxystar 2007-09-05 针对不同应用切换到最合适的GC算法好了.
如果是1.6的jdk, CMS回收算法有很大的增强
详见 http://java.sun.com/javase/6/docs/technotes/guides/vm/cms-6.html 5 楼 devilbaby 2007-09-05 不单是垃圾收集,vm会根据空余内存,在xms和xmx之间调整内存,所以会耗时 6 楼 liquidthinker 2007-09-05 dennis_zane 写道不同厂家的jdk垃圾回收算法不一样,不能一概而论
补充,并且同一jdk的gc策略也有多种,不能一概而论
另外,在sun的jdk下,Xms和Xmx设置一样,可以减轻伸缩堆大小带来的压力,但在ibm的jdk下面,设置为一样会增大堆碎片产生的几率,并且这种负面影响足以抵消前者产生的益处 7 楼 Joo 2008-04-30 请教各位大大哪里可以查阅到有关JVM GC和多种JVM比较的资料 谢谢 8 楼 cai555 2008-04-30 google