编程高手必学的内存知识
海纳
华为编译器高级专家,原 Huawei JDK 团队负责人
20674 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
编程高手必学的内存知识
15
15
1.0x
00:00/00:00
登录|注册

不定期福利第二期 | 软件篇答疑

你好,我是海纳。
随着课程的不断更新,同学们的留言也越来越精彩。我也经常会到这门课的留言区转一转,大部分的疑问,我都已经在留言区做了回复,但我知道你可能在一些地方还存在着疑问。所以,我在这里将同学们问得比较多的问题提炼出来,统一地进行解答,同时,我还整理了软件篇中难度比较大的课后思考题答案,希望能给你带来帮助。
那我们先从高频问题的解答开始吧。

高频留言答疑

问题一:JVM 的内存布局和 Linux 进程的内存布局有什么关系?它们是一样的吗?
这个问题看起来很难,但你可以从 JVM 的原理入手来找到突破点。典型的 JVM,比如 Hotspot,它们运行起来以后,也是操作系统上一个普通进程而已。所以,我们可以推论,hotspot 进程也有自己的代码段、数据段、堆和栈。我们按照从简单到复杂的顺序来展开 Hotspot 进程中的内存布局。
首先,我们先看代码段。Hotspot 运行以后,它的代码段里存放的不是 Java 代码,而是虚拟机自己的代码。这些代码都是由 C++ 编写的,它实现了虚拟机的逻辑。Hotspot 会新开辟一段区域,叫做 Metaspace,用于加载 Java 的 class 文件,并且 Java 的类信息、方法定义的字节码都存储在这里。所以,从 Linux 进程的角度看,这一块内存其实是操作系统的堆内存,只不过被用来存储 Java 字节码了而已。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文是海纳老师的答疑文章,主要围绕JVM的内存布局和Linux进程的内存布局展开讨论。海纳老师通过解答同学们提出的高频问题,深入剖析了JVM内存布局与Linux进程内存布局的关系,以及堆外内存的概念。他从JVM的原理出发,逐步解释了Hotspot进程中的内存布局,包括代码段、栈、即时编译所使用的代码段以及堆内存。同时,他强调了内存区域的性质不是由地址决定,而是由作用决定的原则,并举例说明了mmap出来的内存可以被认为是堆内存的情况。此外,海纳老师还解释了堆外内存的概念及其在Java程序中的应用。通过本文,读者可以快速了解JVM内存布局与Linux进程内存布局的关系,以及堆外内存的概念和应用,对于深入学习虚拟机的更多知识也提供了参考书籍建议。 文章还包括了对一些技术问题的深入解析,如段寄存器的作用、堆内存的权限、线程栈切换的方式、动态库文件生成的选项、以及HVA到HPA转换过程中的实现选择。这些问题的解析涉及到Linux操作系统、动态库生成、虚拟内存管理等多个领域,为读者提供了全面的技术视角。通过本文,读者可以快速了解这些技术问题的解决方案和原理,为技术学习提供了有益的参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《编程高手必学的内存知识》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • shenglin
    线程是可以访问进程的内存空间的,这就导致按需写时复制机制不能实现。海纳老师,这个能展开讲一下吗,还是不理解为什么线程能访问进程的内存空间,写时复制就不能实现了?

    作者回复: 写时复制之前是不是要先做页表复制呀?这样物理页的引用计数才会增加。但是创建线程的时候是不需要复制页表的。核心点在于创建线程时,还是使用原来进程的页表。这里再想一下?

    2021-11-26
    2
    4
  • keepgoing
    可以理解现在基于各个语言各个平台的热更新技术也是基于语言虚拟机技术实现的吗

    作者回复: 不全是。热更新技术多种多样。比如我们第8课里讲的GOT表,其实在运行时把GOT表里的地址修改掉也是一种热更新方式啊。只要能达成不停机修改代码的目的就可以。方式是可以多种多样的。相对来说,虚拟机会更容易一些。

    2021-11-27
    2
  • 李二木
    能加餐点JVM相关的嘛😄

    作者回复: JVM想知道哪些内容,可以留言哦。后面不定期会有加餐。

    2021-11-26
    4
  • 费城的二鹏
    感谢老师的第二弹加餐,内容太硬核了,简直是一节课的内容,🐮🍺

    作者回复: 所以记得分享给更多的朋友哦~

    2021-11-26
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部