zoukankan      html  css  js  c++  java
  • 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。程序性能得以提高。根据机器的不同,内存设置大小不一致。
  • 相关阅读:
    【题解】P3565 [POI2014]HOT-Hotels
    【学习笔记】$gcd$ 与扩展 $gcd$
    【题解】P3810 【模板】三维偏序(陌上花开)- $CDQ$
    【题解】P3374 【模板】树状数组 1
    【考试总结】2020 上半年 汇总
    【题解】P4570 [BJWC2011]元素
    【题解】P2480 [SDOI2010]古代猪文
    【考试总结】小奇模拟赛
    【题解】P3349 [ZJOI2016]小星星
    搞懂ZooKeeper的Watcher之源码分析及特性总结
  • 原文地址:https://www.cnblogs.com/a393060727/p/12041268.html
Copyright © 2011-2022 走看看