Java虚拟机--------JVM常见参数
JVM 调优常见参数
Java1.7的jvm参数查看一下官方网站。 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html Java1.8 http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html Hotspotvm知识查看一下官方网站。 http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html 主要的参数是:堆的大小、栈的大小、新生代和老年代的比值、新生代中eden和s0、s1的比值。 -Xms:初始堆大小,默认是物理内存的1/64。默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到--Xmx的最大限制。例如:-Xms 20m。 -Xmx:最大堆大小。默认是物理内存的1/4 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。 -XX:NewSize=n:设置年轻代大小(初始值)。 -XX:MaxNewSize:设置年轻代最大值。 -XX:NewRatio=n:设置年轻代和年老代的比值。 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。 -XX:PermSize(1.8之后改为MetaspaceSize) 设置持久代(perm gen)初始值,默认是物理内存的1/64。 -XX:MaxPermSize=n:(1.8之后改为MaxMetaspaceSize)设置最大持久代大小。 -Xss:每个线程的堆栈大小。
JVM 学习思路
jdk --> java develop kit ,jre ---> java runtime environment,java 有个特点:一次编译运行,就是有这个jvm,jvm,java viturl machine jvm ---> 一、程序隔离区,一个程序共享区 jvm -->堆---> 为了内存溢出---> gc(垃圾)--->判断(引用、可达性分析)--->最终判断生死需要两次判断(如果其中调用了finalize方法,就会复活,不会被回收)
---> 回收算法(标记+清除+整理,复制)--->选择合适的回收器(paranew + cms)--> 对象进入老年代得三种可能,---> jvm分析工具(jps,jmap,jconsole,jstat)