java虚拟机学习01——jvm参数
2016-06-05 17:16
330 查看
在看《深入理解java虚拟机》的时候,我对书中使用的到许多jvm参数不是很了解,在这里记录下常用的jvm参数,以后遇到新的命名也会在这更新
首先说下jvm参数如何使用,我这里用的是Myeclipse,右键程序Run as -> Run Configuration,这里一定要说下,在左侧的java application中找到自己的入口类,如果没有,就双击java application,一般就能刷新出来了,剩下的就简单了,Arguments中找到VM arguments,在这里输入jvm参数
接下来说说jvm参数,首先从几个常用的说起
20: [GC [DefNew: 10K->2K(20K), 1 secs] 15K->5K(50K), 1.5 secs]
20表示从java虚拟机启动以来的时间
DefNew表示用的Serial收集器对新生代的垃圾回收
10K->2K(20K), 1 secs表示新生代当前使用空间gc后从10K降低2K,括号里的20K表示该空间(新生代)的总内存,1secs表示gc用了1秒
15K->5K(50K):GC前Java堆已使用容量->GC后Java堆已使用容量(Java堆总容量)
PSYoungGen total 9216K, used 7143K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)
eden space 8192K, 87% used [0x00000000ff600000,0x00000000ffcf9fb8,0x00000000ffe00000)
from space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)
to space 1024K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000)
PSYoungGen:使用Parallel Scavenge收集器对新生代gc
[0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)分别表示新生代在内存中的低边界值,当前位置,高边界值
新生代分配的大小 = eden space + from space + to space 不等于 9216,目前还不懂为什么不等
以上是我遇到的jvm参数以及如何读懂gc日志,后续更新......
首先说下jvm参数如何使用,我这里用的是Myeclipse,右键程序Run as -> Run Configuration,这里一定要说下,在左侧的java application中找到自己的入口类,如果没有,就双击java application,一般就能刷新出来了,剩下的就简单了,Arguments中找到VM arguments,在这里输入jvm参数
接下来说说jvm参数,首先从几个常用的说起
Xms20m -Xmx20mjava堆的初始大小为20m,最大为20m
-XX:PermSize=10M -XX:MaxPermSize=10M永久代的初始大小为10M,最大值为10M
-Xss128k每个线程栈区的大小
-XX:SurvivorRatio=8设置Eden和Suvivor区的比例为8:1,注意这里是Eden和一个Suvivor区的比例,为什么要有两个Survivor以后的文章会解释
XX:NewRatio=4表示老年代与年轻代的比值,如果用-Xmn设置过了年轻代大小,就不要设置这个值了
-verbose:gc 或者-XX:+printGC打印出gc执行的简要信息,这里要说下如何读懂gc的日志信息,假设有以下gc日志:
20: [GC [DefNew: 10K->2K(20K), 1 secs] 15K->5K(50K), 1.5 secs]
20表示从java虚拟机启动以来的时间
DefNew表示用的Serial收集器对新生代的垃圾回收
10K->2K(20K), 1 secs表示新生代当前使用空间gc后从10K降低2K,括号里的20K表示该空间(新生代)的总内存,1secs表示gc用了1秒
15K->5K(50K):GC前Java堆已使用容量->GC后Java堆已使用容量(Java堆总容量)
-XX:+PrintGCDetails打印gc执行的详细信息,详细信息的日志会和上面不一样,如以下形式:
PSYoungGen total 9216K, used 7143K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)
eden space 8192K, 87% used [0x00000000ff600000,0x00000000ffcf9fb8,0x00000000ffe00000)
from space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)
to space 1024K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000)
PSYoungGen:使用Parallel Scavenge收集器对新生代gc
[0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)分别表示新生代在内存中的低边界值,当前位置,高边界值
新生代分配的大小 = eden space + from space + to space 不等于 9216,目前还不懂为什么不等
以上是我遇到的jvm参数以及如何读懂gc日志,后续更新......
相关文章推荐
- Java 6 JVM参数选项大全(中文版)
- 深入解析JVM对dll文件和对类的装载过程
- JVM Tomcat性能实战(推荐)
- Java虚拟机JVM性能优化(二):编译器
- Java程序员必须知道的5个JVM命令行标志
- Java虚拟机JVM性能优化(三):垃圾收集详解
- 简单谈谈JVM、JRE和JDK的区别与联系
- 解析Java虚拟机中类的初始化及加载器的父委托机制
- JAVA中JVM的重排序详细介绍
- 浅谈Java的虚拟机结构以及虚拟机内存的优化
- JVM角度调试优化MyEclipse
- Java虚拟机JVM性能优化(一):JVM知识总结
- Android Studio 报错failed to create jvm error code -4的解决方法
- 解析Linux系统中JVM内存2GB上限的详解
- 了解Java虚拟机JVM的基本结构及JVM的内存溢出方式
- Java堆空间占满的gc日志实例
- JVM调优之Tomcat启动参数配置及详解(一)
- java动态代理模式
- Groovy Meta Object Protocol
- java类文件结构