JVM学习

JVM体系结构概览
在这里插入图片描述

类加载器

在这里插入图片描述

类的加载器
启动类加载器(Bootstrap) c++写的 java获取加载器是获取的是null

  • 扩展类加载器(Extension)
  • 应用程序类加载器(AppClassLoder)
  • java.lang.ClassLoder的子类 用户可以自己定义的一个类 (主要是上面三个加载器)
    类加载时是双亲委派及机制 简单明了就是向上捅
    沙箱安全

运行时数据区

包括:

  1. 方法区
    储存一个类的结构信息

  2. java栈 java stack

  3. 本地方法栈 native method stack
    native java无能为力 需要调用底层或者第三方函数库 在这里执行

  4. 程序计数器 pc寄存器
    指向下一条要执行的指令

方法区

  1. 所有线程共享的内存区域
  2. 方法区储存的是类的结构信息
  3. 方法区是一种规范
    对象类存储在堆中 不在方法区

java 栈

方法在java里叫方法 在栈中叫栈帧

  1. 栈管运行 堆管存储
  2. 栈保存的东西?
    a. 8种基本类型
    b. 对象的引用变量
    c. 实例方法
    d. 实例对象的引用地址

堆 heap

在这里插入图片描述

堆内逻辑上分为三个部分:新生 养老 永久(元空间)
物理上分为两个部分:新生 养老
在这里插入图片描述

元空间:存储区的一个常驻内存区域。存放JDK自身携带所携带的Class Interface的元数据
堆参数调整:
• 参数一样大
GC日志信息
这是YGC↓
在这里插入图片描述
在这里插入图片描述

垃圾回收算法: 分代收集算法集合

  1. 引用计数法
    a. 缺点
    ⅰ. 每次对对象赋值时要维护计数器,计数器本身也是一种消耗
    ⅱ. 难以处理循环引用
    b. 优点
    ⅰ. 简单
    JVM一般不使用
  2. 复制算法
    a. 优点
    ⅰ. 不会产生内存碎片
    b. 缺点
    ⅰ. 消耗内存
  3. 标记清除
    a. 介绍:先进行标记,后期进行统一的回收
    b. 优点
    ⅰ. 节约内存空间
    c. 缺点
    ⅰ. 增加内存碎片

主要用于老年代

  1. 标记压缩
    a. 优点
    ⅰ. 相对于标记清除碎片整理了
    b. 缺点
    ⅰ. 相对于标记清除时间增加
    c. 标记-清除-压缩 (进化那般)
    ⅰ. 原理
  2. 集中清除跟压缩
  3. 多次GC后才进行压缩
    GC总结
    在这里插入图片描述

JMM内存模型

在这里插入图片描述

JVM语法规定静态块>构造块>构造方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值