Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86349
  • 博文数量: 14
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-16 22:14
文章分类

全部博文(14)

文章存档

2014年(1)

2013年(13)

我的朋友

分类: 系统运维

2013-04-04 19:19:03

以下是我接触到的sun和IBM的JDK的参数
(1)Sun的jdk:
USER_MEM_ARGS="-Xms4096m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=768m -XX:NewRatio=4 -XX:SurvivorRatio=6 -Xmn1024M -XX:+PrintGCDetails -Xloggc:AppServergc.log"
-Xms:表示堆内存初始值,启动应用时,JVM 堆空间的初始大小值。
-Xmx:表示堆内存最大值,应用运行中,JVM 堆空间的极限值。为了不消耗扩大JVM 堆控件分配的开销,将此参数和-Xms 这个两个值设为相等,考虑到需要开线程,讲此值设置为总内存的80%.
-Xmn:此参数硬性规定堆空间的新生代空间大小,推荐设为堆空间大小的1/4。
-XX:PermSize:非堆内存初始值
-XX:MaxPermSize:非堆内存最大值
-XX:+HeapDumpOnCtrlBreak:可用kill -3来生成heapdump文件
-XX:+HeapDumpOnOutOfMemoryError:内存错误会生成heapdump文件
-XX:NewRatio=4,意味着tenured 和 young的比值4:1,这样eden+2*survivor=1/5
-XX:SurvivorRatio=6意味着eden和一个survivor的比值是6:1,这样一个Survivor就占Young区的1/8.数值越小越增大救助空间,减少转移到老年代的数据
-XX:+PrintGCDetails:打印gc日志  
-Xloggc:gc日志文件位置

(2)IBM的JDK:
USER_MEM_ARGS="-Xms4096m -Xmx4096m -Xmn1024m -Xgcpolicy:gencon -verbose:gc -Xverbosegclog:Managed7017gc.log"
(这是ibm的jdk的垃圾回收机制的参数)
(使用IBM的JDK是一般不把Xms和Xmx设置一样大小,由于IBM的GC特点造成的,而SUN的JDK采用的是分代回收的策略,所以就没有这种情况,反而会受益于堆大小一致。不过这么说起来,用了-Xgcpolicy:gencon,就应该把最小堆最大堆设置成一样咯。)
java -verbose:使用参数来观察Java的运行信息,-verbose.gc开关可显示GC的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等
java –verbose:gc:在虚拟机发生内存回收时在输出设备显示信息
java -verbose:class: 在程序运行的时候究竟会有多少类被加载呢,一个简单程序会加载上百个类的!你可以用verbose:class来监视,在命令行输入java -verbose:class XXX  (XXX为程序名)你会在控制台看到加载的类的情况。
java –verbose:jni:  -verbose:jni输出native方法调用的相关情况,一般用于诊断jni调用错误信息
-Xgcpolicy:gencon  分代并发
以不同方式处理短期存活的对象和长期存活的对象。采用这种策略时,具有许多短期存活对象的应用程序会表现出更短的停顿时间,同时仍然产生很好的吞吐量
IBM SDK 5.0 中的不同 GC 策略以及它们的一些性质,具体参见(http://www.ibm.com/developerworks/cn/java/j-ibmjava2/
使用verbosegc可以监控堆的使用情况。
· 在堆到达稳定状态之前,垃圾收集发生的过于频繁
使用verbosegc检测堆到达稳定状态时的大小,然后设置-Xms参数等于该大小
· 堆已经扩展到最大限制,但是堆占用率仍然高于70%
增加-Xmx的设置,以使得堆能够扩展到一个能够保证占用率不高于70%的大小。但是需要注意的是,要保证堆的内存都是从物理内存占用,避免出现页交换
· 堆占用率在70%,但是垃圾收集发生的频率过高

阅读(1908) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~