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

原创 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系列(二)之GC机制、收集器与GC调优

一、回顾JVM内存分配 需要了解更多内存模式与内存分配的,请看 深入JVM系列(一)之内存模型与内存分配 1.1、内存分配: 1、对象优先在EDEN分配 2、大对象直接进入...

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

原文地址:http://www.cnblogs.com/smyhvae/p/4736162.html 【声明】  欢迎转载,但请保留文章原始出处→_→  生命壹号:http://www.cnb...
  • Mr__fang
  • Mr__fang
  • 2015年08月17日 13:14
  • 25206

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

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

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

【声明】  欢迎转载,但请保留文章原始出处→_→  生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhva...

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

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

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

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

ubuntu14.04虚拟机中搭建fbctf线上比赛平台

FBCTF是一个由 facebook用PHP语言开发的在线安全比赛平台, 学生和开发者可通过此平台了解网络安全和进行安全编码的实践。FBCTF平台开源内容包括CTF游戏地图,可用平台组织自己的线上网络...

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

最近,网络空间安全的概念被不断提及,网络安全也越来越受到人们的重视,由此,各种各样的信息安全竞赛也应运而生,可谓是铺天盖地,让人眼花缭乱!不知不觉,自己也逐渐成了一个小赛棍。。。。。。其实搞信安,最重...
  • Drongin
  • Drongin
  • 2016年12月15日 13:33
  • 3514

Linux debian常用软件与虚拟机的安装配置

Linux debian 8 (jessie)软件安装与配置。经过整整一个星期的折腾,终于把电脑日常必须的东西都弄好了,简单纪录下来。之后一只忙项目,现在终于可以写我的第一篇博客了。目录Linux d...

常用Java虚拟机调试和配置参数

跟踪调试参数-XX:PrintGC //最简单的GC日志 -XX:PrintGCDetails //输出GC详细信息 -XX:+PrintHeap...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线上常用的虚拟机配置详解
举报原因:
原因补充:

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