视频课程
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

视频课程
立即观看
付费视频

您支付费用,方可查看完整视频

¥{{user.role.value}}
课程视频
开始学习
会员专享

视频合集

深入JVM内存模型(图文视频详解)

  • 课程笔记
  • 问答交流

JVM无论是大厂面试,还是工作实际的性能优化,都是需要深入掌握的内容。

从这节课开始,我们就正式进入了性能优化这个专题,我先从JVM开讲。

为了助大家掌握好JVM内存模型,这节课我会重点讲解以下7点:

1.JVM整体结构

2.JVM运行时数据区

3.JVM堆内存结构

4.JVM方法区

5.JVM虚拟机栈

6.JVM程序计数器

7.JVM源码案例详解

首先从JVM的源头,也就是数据的分配开始讲解,重点会谈到JVM的整个体系结构,最后还会结合着案例来让大家理解清楚数据的存储。

JVM整体结构

深入JVM内存模型(图文视频详解)-mikechen

JVM运行时数据区

 

 

 

评论交流
  1. mikechen

    good ✗咧嘴笑✗ ✗拳头✗

    我再补充另外一个小细节:JDK1.8版本与之前的永久代除了最大的区别是本地内存外,还有什么细节点不一样的么?

  2. 路正银

    详细描述jvm内存模型的核心组成?
    1、堆内存 eden、Survivor Space(幸存者区)、老年代
    2、方法区 存储类信息、常量(final)、静态变量(static),JIT编译后的代码不会变更的数据
    3、栈内存(java虚拟机栈和本地方法栈)java虚拟机栈:基本数据类型、局部变量、引用

    重点谈谈堆的实现组成,完整描述新生代到老年代的迁移过程?
    堆内存划分为新生代、老年代和永久代(永久代在JDK1.8版本替换为元数据)
    1、通过年龄计数器判断一个对象是否需要转移。对象每经过一个GC仍然存活,年龄计数器加一,当年龄超过设定的值,则将其通过担保机制转移到老年代。
    2、动态绑定,当Suvivor中年龄相同的对象数量超过一半,则年龄大于等于该年龄的对象转移到老年代,无需等待设置的最大年龄值。
    3、大对象直接进入老年代。

    谈谈JDK1.8版本的元空间与之前版本的永久代的区别?
    元空间使用本地内存,而永久代使用的是jvm的内存。

    最后再来一道思考题:一个类中定义了 String a=”b”和 String c = new String(“b”),请问这两个对象会分别创建在 JVM 内存模型中的哪块区域呢?
    “b”在常量池中,new String(“b”)在堆中。

  3. 李鸿翼

    详细描述jvm内存模型的核心组成?
    1.堆
    2.方法区
    3.栈

    重点谈谈堆的实现组成,完整描述新生代到老年代的迁移过程?
    1.新生代
    eden
    from
    to
    2.老年代

    刚开始创建对象放到堆新生代的eden区,随着eden空间逐渐放满,会触发一次yang gc, 存活的对象转移到from区,
    对象继续增长,直到from区也放不下后,会把存活对象转移到to区域。当存活对象每经历一次gc,年龄就会加1,当超过15次后,就会把这些大龄对象转移到老年区。

    谈谈JDK1.8版本的元空间与之前版本的永久代的区别?
    元空间内存是创建在本地内存区的

    最后再来一道思考题:一个类中定义了 String a=”b”和 String c = new String(“b”),请问这两个对象会分别创建在 JVM 内存模型中 的哪块区域呢?
    第一个在常量池中,第二个在堆内存中

    • mikechen

      我补充另外一个小细节:JDK1.8版本与之前的永久代除了最大的区别是本地内存外,还有什么细节点不一样的么? ✗咧嘴笑✗