JVM|内存区域、垃圾回收

JVM内存区域

线程私有区域

程序计数器

  • 当前线程所执行的字节码的行号指示器
  • 方法执行时,记录的是实施虚拟机字节码指令的地址,若为native方法时,值为空。

虚拟机栈

  • 描述方法执行过程的内存模型,在当前栈帧中存储了局部变量表、操作数栈、动态链接、方法出口等信息,同时存储部分运行时数据和数据结构,处理动态链接方法返回值和异常分派。

本地方法区

  • 为native方法服务

线程共享区域

方法区

  • 存储常量、静态变量、即时编译后的代码、类信息、运行时常量池等数据

  • 存储JVM运行过程中创建的对象和产生的数据

  • 垃圾回收角度分类

    • 新生代

      • 分区

        • Eden区
        • ServiviorFrom区
        • ServivorTo区
      • MinorGC(复制)

        • Eden区和SF区中存活的对象进入到ST区,如出现对象年龄到达标准、ST空间不足、对象属于大对象的情况则直接复制到老年代
        • 清空Eden区和SF区中的对象
        • ST区和SF区互换
    • 老年代

      • 存放有长生命周期的对象和大对象

      • MajorGC(标记清除)

        • 在进行MajorGC前,JVM会进行一次MinorGC,若仍出现老年代空间不足或无法找到足够大的连续空间,会触发MajorGC
    • 永久代

      • 指内存的永久保存区域,主要存放Class和Meta的信息

直接内存

垃圾回收

确定垃圾

  • 没有任何引用该对象

  • 策略

    • 引用计数法
    • 可达性分析法

垃圾回收算法

  • 标记清除法
  • 复制算法
  • 标记整理算法
  • 分代收集算法

垃圾收集器

  • 新生代

    • Serial:单线程复制算法
    • ParNew:多线程复制算法
    • Parallel Scavenge:多线程复制算法
  • 老年代

    • CMS:多线程标记清除算法
    • Serial Old:单线程标记整理算法
    • Parallel Old:多线程标记整理算法
    • G1:多线程标记整理算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值