
JVM学习
文章平均质量分 62
JVM原理学习,视频课程:图灵学院诸葛老师性能调优专题
肥宅快乐翔
听别人说整理读书笔记学得比较牢固,所以我来试一下
展开
-
垃圾回收算法和垃圾收集器
一、垃圾回收算法当前的垃圾收集都采用分代收集算法,即年轻代和老年代用不同的算法,以更符合自身的特点标记复制算法(年轻代young gc使用的就是标记复制算法):将内存分为A、B两个区域,只用A区,B区闲置当A区用完,则把A区标记的存活对象复制到B区,再清理A区,两个区域循环使用速度快但是内存利用率低标记整理算法:标记内存中存活的对象让存活的对象向内存的一端移动,清理掉边界以外的内存标记清除算法:标记内存中存活的对象,对未标记的对象进行清除会产生大量不连续的内存碎片原创 2022-01-17 22:07:16 · 327 阅读 · 0 评论 -
JVM内存分配机制
一、为对象分配内存的过程:分配内存:空闲列表法:维护了一张标记了空闲内存块的表,需要分配内存就在表里取一块指针碰撞法:堆种的内存绝对规整,被使用的内存放在一边,未被使用的在另一边,有指针指向分界点处理并发情况:CAS失败重试本地线程缓冲TLAB:每个线程预先在堆中分配一块内存,线程之间分配对象互不冲突对象内存回收算法:引用计数法:对象如果被引用,它的引用计数器+1,只会回收引用计数器为0的对象;但是会出现循环引用的问题,A引用B,B引用A,除此之外没有其他引用,那A和B永远不原创 2022-01-17 21:40:21 · 237 阅读 · 0 评论 -
JVM内存模型
一、JVM简述个人对JVM的理解:是一个专门运行Java程序的小型操作系统,随着程序的启动而启动,结束而结束JVM的组成:线程共享的区域:方法区:存放instanceKlass元数据、常量、静态变量堆:存放对象,包括:对象头、元数据指针、实例数据线程独享的区域:栈:存放方法的局部变量表、操作数栈、动态链接、方法出口二、JVM加载对象举例举例代码: A a=new A(); public Class A{ public int x;原创 2021-12-16 20:04:07 · 1082 阅读 · 0 评论 -
JVM类加载器
一、类加载过程创建Java虚拟机创建引导类加载器实例引导类加载器加载JVM启动器Laucher类,创建该类的实例laucher类获取运行类的classLoader调用loadClass加载运行的类其中loadClass的过程可以分解为:加载字节码文件到内存,并创建类的Class对象校验字节码文件给类的静态变量分配内存,赋默认值静态链接(符号引用替换为直接引用,即将静态方法本身替换为指向内存中该数据所在的地址)对类的静态变量进行初始化二、类加载器作用:将.class文件中原创 2021-12-10 18:04:34 · 440 阅读 · 0 评论