线上常用的虚拟机配置详解

原创 2013年12月06日 11:05:10

在JRockit的GC参数如下

-jrockit -Xms1636m -Xmx1636m -Xgc:parallel-Xjvmpi:allocs=off,monitors=off,entryexit=off

在Sun hotSpot下的GC参数如下

JAVA_OPTS="-server -Xms4g -Xmx4g -XX:PermSize=296m-XX:MaxPermSize=296m -Xmn1600m -XX:+UseConcMarkSweepGC-XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly-XX:CMSInitiatingOccupancyFraction=82 -XX:+PrintGCTimeStamps-XX:+DisableExplicitGC -XX:SurvivorRatio=10"


JAVA_OPTS="${JAVA_OPTS}-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/home/admin/logs/java.hprof"
JAVA_OPTS="${JAVA_OPTS} -XX:+UseCompressedOops"
JAVA_OPTS="$JAVA_OPTS -verbose:gc  -Xloggc:/home/admin/logs/gc.log-XX:+PrintGCDetails -XX:+PrintGCDateStamps"

 主要分析一下hotSpot虚拟机参数

参数详解:

XX:+UseConcMarkSweepGC:使用并发收集器,适用于响应时间要求比较高的中,大规模应用。

XX:+UseCMSCompactAtFullCollection:是表是执行Full GC后对内存进行整理压缩,免得产生内存碎片

XX:+CMSParallelRemarkEnabled:降低标记停顿

XX:+CMSPermGenSweepingEnabled:FULLGC触发对PermGen区的回收 JDK1.6以后

XX:+CMSClassUnloadingEnabled:配置了CMSClassUnloadingEnabled,且Perm Gen的使用达到一定的比率 默认为92%.会触发CMS    

XX:+UseCMSInitiatingOccupancyOnly:指示只有在 oldgeneration 在使用了初始化的比例后concurrentcollector 启动收集

XX:CMSInitiatingOccupancyFraction=82:使用cms作为垃圾回收使用82%后开始CMS收集

XX:+PrintGCTimeStamps:打印GC信息

-XX:+DisableExplicitGC标志自动将System.gc()调用转换成一个空操作

 -XX:SurvivorRatio=10:Eden区与Survivor区的大小比值。设置为10,则两个Survivor区与一个Eden区的比值为2:10,一个Survivor区占整个年轻代的1/12

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/admin/logs/java.hprof:当JVM发生OOM时,自动生成DUMP文件。示生成DUMP文件的路径,也可以指定文件名称

-XX:+UseCompressedOops:指针压缩通常64位JVM消耗的内存会比32位的大1.5倍,这是因为对象指针在64位架构下,长度会翻倍(更宽的寻址)

-verbose:gc表示输出虚拟机中GC的详细情况和-XX:+PrintGCTimeStamps一起用

 以下参考

http://rednaxelafx.iteye.com/blog/906807

其中要注意的是

DisableExplicitGC

其中一种情况是下述三个条件同时满足时会发生的: 

1、应用本身在GC堆内的对象行为良好,正常情况下很久都不发生full GC; 

2、应用大量使用了NIO的direct memory,经常、反复的申请DirectByteBuffer 

3、使用了-XX:+DisableExplicitGC 

此时有可能会抛出这个异常:java.lang.OutOfMemoryError: Direct buffer memory  。

所以

如果用了该参数而且遇到direct memory的OOM,可以尝试去掉该参数看是否能避开这种OOM。如果担心System.gc()调用造成full GC频繁,可以尝试下面提到 -XX:+ExplicitGCInvokesConcurrent 参数 



 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JVM性能调优之生成堆的dump文件

最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。 一、JVM内存模型及垃圾收集算法  1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代)T...

JVM调优分享-(调优的关键点)

实用JVM参数介绍 1. JIT编译参数 jit(just -in-time) ,可以在运行时将字节器编译成本地代码。从而提高代码的执行效率 -XX:CompileThreshold为编译的阀值。...

JVM调优分享-(概要+例子)

堆与栈 栈是运行时的单位,而堆是存储的单位 1.栈代表了处理逻辑,而堆代表了数据 2.堆中的内容可以被多个栈共享 3.面向对象就是堆和栈的结合 JAVA中堆存的是对象。栈中存的是基本据类型和堆中对象的...

如何分析jvm dump 内存日志

如何dump出jvm日志。 1. 在jvm启动的参数中,新增 jvm参数。这样在发生jvm 内存溢出时,就会直接dump出java.hprof 文件了。

如何分析jvm dump线程

如何分析jvm dump线程

Java虚拟机详解----常用JVM配置参数

原文地址:http://www.cnblogs.com/smyhvae/p/4736162.html 【声明】  欢迎转载,但请保留文章原始出处→_→  生命壹号:htt...

Java虚拟机详解03----常用JVM配置参数

文章来源:http://www.cnblogs.com/smyhvae/p/4736162.html   本文主要内容: Trace跟踪参数堆的分配参数栈的分配参数   ...

Java虚拟机详解03----常用JVM配置参数

本文主要内容: Trace跟踪参数堆的分配参数栈的分配参数   零、在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些...

Java虚拟机详解----常用JVM配置参数

原文地址:http://www.cnblogs.com/smyhvae/p/4736162.html 【声明】  欢迎转载,但请保留文章原始出处→_→  生命壹号:http://www.cnb...

本地Ubuntu14.04虚拟机搭建fbctf线上CTF比赛平台教程

最近,网络空间安全的概念被不断提及,网络安全也越来越受到人们的重视,由此,各种各样的信息安全竞赛也应运而生,可谓是铺天盖地,让人眼花缭乱!不知不觉,自己也逐渐成了一个小赛棍。。。。。。其实搞信安,最重...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)