JVM基础知识点

JVM基础知识总结:

  • jvm内部结构:
    在这里插入图片描述
    堆内存的的结构:在这里插入图片描述元空间逻辑上存在单是物理上不存在;
    方法区:存储类信息、常量、静态变量。全局共享。
    堆区:存放对象和数组。全局共享。
    栈区:基本数据类型、对象的引用都存放在这。线程私有。
  • 类加载器:
    在这里插入图片描述
    类加载器涉及到双亲委派机制:
    双亲委派机制的作用:
  • 安全,可以避免用户自己编写的类动态替换java的核心 类,如java.lang.String
  • 避免全限定名称的类重复加载(使用了findLoadClass()判断当前类是否已经加载)
  • 流程图:在这里插入图片描述
  • App -->EXC(java扩展类)–>BOOT
  • 类加载器收到类类加载的请求
  • 将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器
  • 启动类加载器检查是否能够加载当前这个类,能够加载就结束,使用当前加载器,否则向下通知子类加载器
  • 如果都无法加载则报错:class not found

3.对象的加载流程:
在这里插入图片描述

  • 什么是垃圾:没有任何引用指向的一个或者多个对象(循环依赖)
  • 如何定位垃圾:1.引用计数法 2.根可达算法:那些可以作为GC的roots (1)线程栈变量 (2)静态变量 (3)常量池 (4)jni指针 (5)类文件
  • 常见的垃圾回收算法:
    1.标记清除法——位置不连续 产生碎片
    2.复制算法——没有碎片,但是浪费内存
    3.标记压缩法——没有碎片,但是效率较低
    **

*JVM内存分代模型:
1.部分垃圾回收器使用的模型
​ 2.新生代+老年代+永久代(1.7) /元数据区(1.8)Metaspace

  1. 永久代 元数据-Class
  2. 永久代必须指定大小限制,元数据可以设置,也可以不设置,无上限(受限于物理内存)
  3. 字符串常量1.7 - 永久代, 1.8 - 堆
  4. Methorea(方法区)逻辑概念 - 永久代、元数据

3.新生代=Eden+2个suvivor区
1.YGC回收之后,大多数的对象会被回收不,活着的进入s0
2.再次YGC,活着的对象eden+s0 ——>s1
3.再次YGC,eden+s1 ——>s0
4.年龄足够——>老年代(15 CMS 6)(年龄的问题和具体的垃圾回收器有关)

5.s区装不下——>老年代

​ 4.老年代
1.顽固分子
2.老年代满了 FGC FULL GC
5.GC Tuning
1.尽量减少FGC

垃圾回收器分类:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值