码迷,mamicode.com
首页 > 其他好文 > 详细

JVM理解

时间:2019-12-14 23:17:26      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:方法   无法   inf   创建   存在   处理   img   一个   com   

类的生命周期,从.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理解

标签:方法   无法   inf   创建   存在   处理   img   一个   com   

原文地址:https://www.cnblogs.com/a393060727/p/12041268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!