查看完整视频
评论可见

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

积分观看

您支付积分,方可查看完整视频

{{user.role.value}}
付费视频

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

¥{{user.role.value}}
专属视频

只允许以下等级用户查看该视频

升级
会员专享

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

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

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

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

JVM整体结构

JVM运行时数据区

隐藏内容,您需要满足以下条件方可查看
End

 

课后作业

这是一道去阿里的大厂面试题

隐藏内容,您需要满足以下条件方可查看
End

 

 

 

JVM

最全JVM垃圾回收算法详解

2020-8-17 17:20:34

JVM

深入JVM类加载全过程解析

2020-8-14 18:57:09

4 条回复 A文章作者 M管理员
  1. 详细描述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 内存模型中 的哪块区域呢?
    第一个在常量池中,第二个在堆内存中

    • 我补充另外一个小细节: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. good ✗咧嘴笑✗ ✗拳头✗

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

个人中心
今日签到
搜索