选择的是sun公司的JDK
域启动模式:建域时选择生产模式,如果用开发模式,并发访问有限。
VM运行模式:JAVA_VM=-server ,64位JDK已经默认,32位JDK还是需要设置。
内存设置:-Xms4096m -Xmx4096m -XX:PermSize=1024m -XX:MaxPermSize=1024m -Xss256k ,持久代初始化与最大一致,避免扩展带来的损耗。持久代保存的是元数据,类,方法以及基本的变量和静态变量。堆保存的是对象。
监控参数:-XX:+PrintGCApplicationStoppedTime -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc_$SERVER_NAME.log ,可以通过gc的日志大致的知道系统因为垃圾回收导致的暂停。如果严重了,需要深入分析代码的问题,往往是功能太耗内存导致。
3.G1 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC,是jdk1.7上从试验标记为正式使用,理论上提供更短的暂停,但更消耗资源。
优点
低GC 延迟
只有一个(并发)任务需要在整个堆上执行
由于堆越来越大,这种设计的优势也越来越明显
新生代收集和混合收集并行
由于计算机的内核越来越多,这种设计的优势也越来越明显
选择新生代收集和收集集合的灵活性很高,内置了启发式方法
Hotspot 中唯一一个正在积极开发的收集器
适合6 GB 以上的大型堆
缺点
虽已采用启发式方法,但尚未调优
占用较大内存
相比其他收集器,需要更多并发处理
域启动模式:建域时选择生产模式,如果用开发模式,并发访问有限。
VM运行模式:JAVA_VM=-server ,64位JDK已经默认,32位JDK还是需要设置。
内存设置:-Xms4096m -Xmx4096m -XX:PermSize=1024m -XX:MaxPermSize=1024m -Xss256k ,持久代初始化与最大一致,避免扩展带来的损耗。持久代保存的是元数据,类,方法以及基本的变量和静态变量。堆保存的是对象。
监控参数:-XX:+PrintGCApplicationStoppedTime -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc_$SERVER_NAME.log ,可以通过gc的日志大致的知道系统因为垃圾回收导致的暂停。如果严重了,需要深入分析代码的问题,往往是功能太耗内存导致。
gc模式选择,有三种模式:
1.当JAVA_VM=-server时,默认是老年代并行 -XX:+UseParallelOldGC,可以通过jinfo -flag UseParallelOldGC 7853(pid)查看。
2.CMS -XX:+UseConcMarkSweepGC 新生代使用并行收集器,老年代使用CMS,适合堆3G以上使用。3.G1 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC,是jdk1.7上从试验标记为正式使用,理论上提供更短的暂停,但更消耗资源。
当然,还有一些系统自身的配置
-Djava.awt.headless=true 用于解决部分图形中中文乱码的问题。
-Dsun.zip.disableMemoryMapping=true 解决jdk1.7的bug http://blog.csdn.net/stevendbaguo/article/details/48707675
优点
低GC 延迟
只有一个(并发)任务需要在整个堆上执行
由于堆越来越大,这种设计的优势也越来越明显
新生代收集和混合收集并行
由于计算机的内核越来越多,这种设计的优势也越来越明显
选择新生代收集和收集集合的灵活性很高,内置了启发式方法
Hotspot 中唯一一个正在积极开发的收集器
适合6 GB 以上的大型堆
缺点
虽已采用启发式方法,但尚未调优
占用较大内存
相比其他收集器,需要更多并发处理