Java基础-JVM调优策略简介
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.JVM结构分析
1>.JVM结构图
2>.JVM运行时数据区功能说明
JVM管理的内存段可分为两大类:线程共享内存和线程私有内存。
2.1:线程共享内存
方法区:存储jvm加载class,常量,静态变量,即时编译器编译后的代码等。
java堆:存储Java的所有对象实例,数组等;
2.2:线程私有内存
程序计数寄存器:每个线程有自己的计数存寄器,存储当前线程执行字节码的地址;
jvm栈:jvm会为每个运行线程分配一个栈区,线程调用方法时和方法返回时和方法返回时会进行入栈和出栈操作;
本地方法栈区:与jvm stack类似,只不过此区域是为调用本地方法服务。
由于每个线程都有自己的私有内存,我们去一一调试他们的内存的话,很显然是不合适的。因此,我们重点关注的对象是线程共享内存的调优。
二.JVM进程的内存结构
新生代:新创建的进程,通常指刚刚创建的对象
老年代:如果对象内存较大通常会放在老年代中,尽管它刚刚创建
持久代:不会被回收
伊甸区Eden:一个对象被创建后,通常被放在伊甸区中,当gc在清理eden时,会将整个eden清空,如果清空时发现eden区创建的对象仍然被引用就会将这些引用对象存入辛存区。
辛存区:
辛存区主要存储的是Eden清理时未被清理的对象,而辛存区又分为辛存一区(from)和辛存二区(to),当gc清理from时,如果对象没有被引用就会被清理,如果有引用就将其清理到辛存二区,你可以简单的理解是将from中仍然被引用的对象存入到to区,同理,当gc在清理辛存二区(to)时,如果依然存在被引用的对象,那么该对象就会被存入到老年
老年区:
主要存放新生代传来的对象,而老年代也是会有gc来清理的哟,只不过老年代的垃圾回收器(gc),即gc可能和新生代的不一致。
三.JAVA调优介绍
1>.Categories of java hotspot VM options
1.1:JavaStaveVM重新定义的标准选项在Java应用程序启动器页面上描述,用于Windows、Solaris和Linux;
1.2:"-X"是非标准选项,其有以下两个显著特点:
第一:不保证在所有VM实现上得到支持‘;
第二:在JDK的后续版本中,如有更改,恕不另行通知;
1.3:"-XX"选项不稳定,如有更改,恕不另行通知。
1.4:jinfo -flags 指令
[root@yinzhengjie ~]# jps 2710 Jps 2635 Bootstrap [root@yinzhengjie ~]# [root@yinzhengjie ~]# jinfo -flags 2635 Attaching to process ID 2635, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.131-b11 Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=130023424 -XX:MaxHeapSize=2048917504 -XX:MaxNewSize=682622976 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=42991616 -XX:OldSize=87031808 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC Command line: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp [root@yinzhengjie ~]#