JVM中的flag设置
2016-03-23 17:04
337 查看
一、堆大小设置
二、收集器设置
三、垃圾回收统计信息
四、并行收集器设置
五、并发收集器设置
下面举个例子:
假设有个名为TestMem.java 的文件
-Xms20M:JVM中Java堆的初始大小为20M。(包括新生代和老年代)
-Xmx20M:JVM中Java堆的最大大小为20M,也就是说不可扩展。(包括新生代和老年代)
-Xmn10M:新生代的大小为10M
-XX:+PrintGCDetails:打印详细GC信息
-XX:SurvivorRatio=8:新生代中一个Enden与一个Survivor区的空间比例是8:1,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10
知道上面的的flag信息之后,我们可以得到以下信息:
java堆的总大小为20M = 20 * 1024K = 20480K
新生代的大小:10M = 10 * 1024K = 10240K
eden space:10240K * 8/10 = 8192K
from space:10240K * 1/10 = 1024K
to space:10240K * 1/10 = 1024K
老年代的大小:20M - 10M = 10M = 10240K
-Xmx3550m:设置JVM最大可用内存为3550M。 -Xms3550m:设置JVM初始可用内存为3550M。 -Xmn2g:设置年轻代大小为2G。 -Xss128k:设置每个线程的堆栈大小为128K -XX:NewSize=4:设置年轻代大小为4 -XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与老年代(除去持久代)的比值为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5 -XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值.设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6 -XX:MaxPermSize=16m:设置持久代大小为16m. -XX:PretenureSizeThreshold=n,大于n的对象直接放入老年代 -XX:MaxTenuringThreshold=0:设置垃圾最大年龄.如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. -XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集. 整个堆大小 = 年轻代大小 + 老年代大小 + 持久代大小。
二、收集器设置
-XX:+UseSerialGC:设置串行收集器 -XX:+UseParallelGC:设置并行收集器 -XX:+UseParalledlOldGC:设置并行年老代收集器 -XX:+UseConcMarkSweepGC:设置并发收集器
三、垃圾回收统计信息
-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:filename
四、并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数.并行收集线程数. -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间 -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1+n)
五、并发收集器设置
-XX:+CMSIncrementalMode:设置为增量模式.适用于单CPU情况. -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数.并行收集线程数.
下面举个例子:
假设有个名为TestMem.java 的文件
javac TestMem.java java -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 TestMem
-Xms20M:JVM中Java堆的初始大小为20M。(包括新生代和老年代)
-Xmx20M:JVM中Java堆的最大大小为20M,也就是说不可扩展。(包括新生代和老年代)
-Xmn10M:新生代的大小为10M
-XX:+PrintGCDetails:打印详细GC信息
-XX:SurvivorRatio=8:新生代中一个Enden与一个Survivor区的空间比例是8:1,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10
知道上面的的flag信息之后,我们可以得到以下信息:
java堆的总大小为20M = 20 * 1024K = 20480K
新生代的大小:10M = 10 * 1024K = 10240K
eden space:10240K * 8/10 = 8192K
from space:10240K * 1/10 = 1024K
to space:10240K * 1/10 = 1024K
老年代的大小:20M - 10M = 10M = 10240K
相关文章推荐
- Hadoop 使用combiner提升性能
- 判断一棵树是不是另外一棵树的子树(dfs)
- Spark RDD(DataFrame) 写入到HIVE的代码实现
- Android蓝牙开发全面总结
- solr新建core
- java——栈和队列 面试题
- NSOJ Minimum Transport Cost
- 简单数论
- python 赋值、深浅拷贝、作用域
- Android开发60条技术经验总结
- BZOJ-4205 卡牌配对 最大流+线性筛+神建模
- Spring 实现数据库读写分离
- 使用 pandas 玩转股票数据
- JdbcTemplate注解注入
- block为什么用copy以及如何解决循环引用
- 来来来,做道题,一起防老年痴呆
- ElasticSearch 2 (28) - 信息聚合系列之高层概念
- Java学习笔记(一)
- hession的使用
- Java enum的用法详解