Java VM 参数描述

内部服务参数配置:

JAVA_OPTS="-server -XX:+UseParNewGC -Xms1024m -Xmx2048m -XX:MaxNewSize=128m -XX:NewSize=128m -XX:PermSize=96m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:CMSInitiatingOccupancyFraction=1 -XX:+CMSIncrementalMode -XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=20000 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0  -XX:CMSIncrementalDutyCycleMin=10 -XX:CMSIncrementalDutyCycle=30 -XX:CMSMarkStackSize=8M -XX:CMSMarkStackSizeMax=32M"

  前端应用参数配置:


JAVA_OPTS="-server  -Xmx4096m -Xms4096m -Xmn480m -Xss256k -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=8 -XX:CMSFullGCsBeforeCompaction=0

-XX:+UseCMSCompactAtFullCollection -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:GCTimeRatio=19

-Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0"

  参数说明:

  -Xmx1280m:设置JVM最大可用内存为1280m。最大可设为3550m。具体应用可适当调整。

  -Xms1280m:设置JVM初始内存为1280m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

  -Xmn480m:设置年轻代大小为480m。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

  -Xss256k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

  -XX:PermSize=64m:指定 jvm 中 Perm Generation 的最小值。 这个参数需要看你的实际情况。可以通过jmap 命令看看到底需要多少。

  -XX:MaxPermSize=128m:指定 Perm Generation 的最大值

  -XX:+UseConcMarkSweepGC:设置并发收集器

  -XX:ParallelGCThreads=8:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

  -XX:CMSFullGCsBeforeCompaction=0:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。

  -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片。

  -XX:SurvivorRatio=8:每个survivor space 和 eden之间的比例。

  -XX:MaxTenuringThreshold=7:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。

  -XX:GCTimeRatio=19:设置垃圾回收时间占程序运行时间的百分比,公式为1/(1+n)。

  -Xnoclassgc:禁用类垃圾回收,性能会有一定提高。

  -XX:+DisableExplicitGC:当此参数打开时,在程序中调用System.gc()将会不起作用。默认是off。

  -XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。

  -XX:-CMSParallelRemarkEnabled:在使用 UseParNewGC 的情况下 , 尽量减少 mark 的时间。

  -XX:CMSInitiatingOccupancyFraction=70:指示在 old generation 在使用了 70% 的比例后 , 启动 concurrent collector。

  -XX:SoftRefLRUPolicyMSPerMB=0:每兆堆空闲空间中SoftReference的存活时间。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-29 02:21:52

Java VM 参数描述的相关文章

内部类-java方法参数的修饰符问题

问题描述 java方法参数的修饰符问题 java在写方法时,为什么有的方法参数用final修饰? 还有就是内部类存在的意义是什么? 也就是说方法中的内部类和类中的内部类各有什么应用场景(请有实战经验的大神各自举个例子)? //问题补充(关于方法中的内部类) 我的意思是: pubic class TestClass{ public void fun(){ public class Test1{ //........ } } } 解决方案 为了实现一些内容,常常需要这么玩: public void

java多线程 参数已经传入构造方法 进入run方法时参数却被改变

问题描述 java多线程 参数已经传入构造方法 进入run方法时参数却被改变 请教各位大神:我在for循环里面执行线程,遇到一个问题,代码如下:private static final ExecutorService executors = Executors.newScheduledThreadPool(10);......for(...){executors.execute(new PublishThread(map));}PublishThread实现了Runnable方法,它有一个私有成

Thinking in java 可变 参数列表问题,请各位帮忙解决。

问题描述 Thinking in java 可变 参数列表问题,请各位帮忙解决. public class OverloadingVarargs3 { static void f(float i Character... args) { System.out.println(""first""); } static void f(char c Character... args) { System.out.println(""second&quo

java方法参数什么时候可以省略数据类型声明

问题描述 java方法参数什么时候可以省略数据类型声明 有时候我看到方法参数是一个匿名对象,那么匿名对象属于什么数据类型,是String类型吗,为什么没有数据类型的声明呢 解决方案 你说的匿名对象,是因为匿名对象本身是有返回值的,而返回值的类型恰好是构造方法的参数类型 A a = new A(new B()): 解决方案二: 看方法的定义,里面包含参数类型. 不知道你说的匿名对象是什么,直接调用构造函数,你可以从构造函数类名知道类型,如果是匿名类,那么这个类型是编译器产生的,实现了参数需要的接口

Java虚拟机参数设置(转)

今天在加载一幅图片时,eclipse报出如下错误: "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space " google了一下原来是图片太大了.可以设置jvm堆的最大值来解决.   首先, 打开Eclipse软件,选择菜单栏run,在二级菜单中选择 Debug Configurations,然后:在弹出的窗口中选择(x)=arguments选项卡,VM arguments中输

jquery easyui datagrid新增 java后台参数接收

问题描述 jquery easyui datagrid新增 java后台参数接收 js部分: var editRow = undefined; var dategrid; $(function() { dategrid = $('#userListTable').datagrid({ url : 'loadSalesmanList', idField : 'userCode', columns : [ [ { title : '姓名', field : 'voUserName', width :

java方法参数带双引号和不带双引号的区别

问题描述 java方法参数带双引号和不带双引号的区别 java方法参数带双引号和不带双引号的区别 比如map.put( " billNum","订单编号", +stateStr); 为什么会有加号,难道方法参数还可以是一个运算表达式 解决方案 map.put( " billNum","订单编号", +stateStr); 这么写不合法 map.put( " billNum","订单编号"

构造方法 数组-小白求大神解惑!! JAVA带参数构造函数与数组

问题描述 小白求大神解惑!! JAVA带参数构造函数与数组 public class TextInsert { private Object[] ins; private int size; public TextInsert(int size){ ins=new Object[size]; } public static void main(String[] args){ TextInsert list=new TextInsert(2); 我想请问下,这里的list 跟 ins 有什么关系,

指针-Java传递参数无法赋值

问题描述 Java传递参数无法赋值 为什么这样无法给pointer赋值,我debug看变量g.adjList[i}.firstedge明明不为null,但是整个循环下来pointer一直都是null,没有赋值成功请问这个什么回事? Graph是我定义的图的数据结构.firstedge的类型也是EdgeNode public static void showAll(Graph g) { for (int i = 1;i<= g.numVertexs ; i++) { 'EdgeNode point