《Java虚拟机JVM故障诊断与性能优化》读书笔记(未完待续)

前言:

  对于JVM学习用处的理解:我们程序员写的代码,虽说是放在服务器(linux)系统上的。但是很多时候,受JVM的影响,其实程序并没有发挥出服务器的最大性能。这时候,JVM就成为了瓶颈了。有瓶颈就要想办法优化解决,这和程序内部的优化一样。区别是,程序的优化一版是重构代码,而JVM的优化,往往是通过修改配置参数。

1.虚拟机基本结构:

  1)方法区:类加载子系统(加载class信息)、常量

  2)java堆:java对象实例(所有线程共享)

  3)直接内存:NIO库允许使用系统的内存空间(不受Xmx指定的最大堆大小)

  4)垃圾回收系统:GC

  5)java栈:局部变量、方法参数,在线程创建时创建,每个线程一个。

  6)本地方法栈:与java栈类似,不同的是一个调用JAVA方法,一个调用本地方法(一般由C语言写)

  7)PC寄存器:每个线程的私有空间,如果是JAVA方法,则会记录当前指令。如果是本地方法则是undifined。

   8)执行引擎:负责执行字节码。(现代虚拟机为了提高效率,会使用即时编译技术,编译成机器码后执行)

 2.对象去哪儿:Java堆辨清

  1)java堆,分新生代(eden、s0、s1),老年代。

  2)大部分情况,对象首先在eden区,然后一次新生代GC后,会进入s0或s1。之后,每次新生代GC后,它的年龄加一。达到一定条件后,被认为是老年代对象,进入老年代

猜你喜欢

转载自www.cnblogs.com/xujanus/p/11539836.html