java虚拟机学习01——jvm参数

来源:互联网 发布:围棋算法 编辑:程序博客网 时间:2024/06/08 05:26

在看《深入理解java虚拟机》的时候,我对书中使用的到许多jvm参数不是很了解,在这里记录下常用的jvm参数,以后遇到新的命名也会在这更新


首先说下jvm参数如何使用,我这里用的是Myeclipse,右键程序Run as -> Run Configuration,这里一定要说下,在左侧的java application中找到自己的入口类,如果没有,就双击java application,一般就能刷新出来了,剩下的就简单了,Arguments中找到VM arguments,在这里输入jvm参数

接下来说说jvm参数,首先从几个常用的说起

Xms20m -Xmx20m
java堆的初始大小为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日志,后续更新......

0 0
原创粉丝点击