JVM理解

Posted a393060727

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM理解相关的知识,希望对你有一定的参考价值。

类的生命周期,从.class文件被类加载器加载后。。直到被GC销毁。

技术图片

 

 

可以从多个角度看,分析。

 

  1. jvm可分为哪几块。。
    1. 类加载器
      1. 启动类加载器
      2. 系统类加载器
      3. 应用类加载器(拓展类)。
    2. 运行时区
      1. 方法区(静态、常量、类的方法。。。)
      2. 堆(所有在程序中的对象创建,都在这里分配内存信息,这里也是垃圾回收处理的重点区域)
      3. java栈(每个线程的对象创建后,这里使用的是全局引用地址,真正的全局对象保存在堆中,当然这里还有那些局部,临时变量),.随着线程执行完毕,消亡。
      4. 程序计数器(程序运行跟踪,计数累计什么的,都在这),.随着线程执行完毕,消亡。
      5. 本地方法栈(native那些开头的,虽然用的少,但是每个线程创建的时候,都会产生,很底层的东西),.随着线程执行完毕,消亡。
    3. 执行引擎
    4. 本地方法接口
  2. 运行时区,有哪几块。。
  3. 垃圾回收过程。。
    1. 年轻代:from与to的内存分配是一样的大小,每次,内存对象只能在from与to中的一个。他采用的是标记清除的算法,每次执行当在from或to区中内存满了后,就执行一次minGC,将无效的移动到另一个区。当次数达到15次后,移动到年老代
      1. from
      2. to
    2. 年老代:只有fullgc的时候才会清理掉,什么样的对象会产生在这里。比如静态类。。比如全局变量,一直无法回收的对象。当大量的这样的对象产生的时,又一直无法回收的时候,造成内存泄漏。解决就是检查程序为什么会不断创建这样的对象,另一个就是内存设置小了,需要扩容。
  4. 垃圾回收算法:
  5. jvm参数调优:一般设置min、max的大小一致,也就是初始的内存与最大内存一致,这样程序就不会不断的gc。程序性能得以提高。根据机器的不同,内存设置大小不一致。

以上是关于JVM理解的主要内容,如果未能解决你的问题,请参考以下文章

jvm的理解

JVM简单理解,全局观理解

JVM简单理解,全局观理解

JVM简单理解,全局观理解

JVM简单理解,全局观理解

深入理解JVM虚拟机6:深入理解JVM类加载机制