深入理解Java虚拟机(第2版)的笔记(43)

按有用程度 按页码先后 最新笔记

  • 盛消

    代码清单中有一行代码获取类的全限定名,我发现它获取不到。代码完全写错了。对于subString的使用我很想吐槽,完全低级错误。

    2019-09-05 12:12:12

  • 白尾巴的黑猫

    在HotSpot的实战中,是使用一组称为OopMap的数据结构来达到这个目的的,在类加载完成的时候,HotSpot就把对象内什么偏移量是什么类型的数据计算出来,在JIT编译过程中,也会在特定的位置记录下栈和寄存器中哪些位置是引用。

    2019-06-17 19:36:30

  • Hesher Ya

    如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空(Undefined)。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemeryError情况的区域。 虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行...

    2018-11-19 01:13:49

  • fankai

    提一个小问题,这里介绍给新对象分配内存时,把bump the pointer翻译为“指针碰撞”,不太好理解。其实bump不只有碰撞的意思,还有增加的意思,所以我觉得把bump the pointer、翻译为“指针扩张”是更加贴切的。

    2018-07-10 13:34:56

  • birdfly

    这一章只是大致介绍一下java的历史,以及市面上有哪些虚拟机。另外编译虚拟机以及调试虚拟机目前没有太多关注,感觉暂时不用了解。

    2018-06-08 00:44:54

  • 不欺售欺

    常量池中主要存放两大类常量:字面量和符号引用。字面量比较接近Java语言层面的常量概念,如文本字符串、声明为final的常量值等。 这里写的声明为final的常量值其实不太准确,这里应该是指字段。我试了下在方法体里面声明的final int 的局部变量,这个值并没有加入到常量池中。其实后面本书也提到方法体内的final为编译时的约束,编译成字节码后是看不出变量是不是final的(见P309)。

    2018-04-09 19:25:18

  • wyyl1

    介绍主内存与工作内存之间是怎样交互的 锁定、解锁、读取、载入、使用、赋值、存储、写入 目前已经放弃这8种操作去定义Java内存模型的访问协议

    2018-03-28 10:10:51

  • 元勰

    这节讲到类加载器的双亲委托机制。类加载器要加载一个类的时候,先交给自己的父类加载。父加载器加载不了。再交给自己来加载。这么做主要保证对于一个类的加载,在任何时候都是一样的。 这种问题本质就是搜索。先看这个文件在哪里,谁来处理。这里面有一个东西,就是计算机网络在dns解析的时候用到的路由表。本地找不到,再到父级路由找,再往上找一直到跟路由。感觉这两者理念差别并不大。主要原因在于,java类加载是先让父类...

    2018-03-20 16:49:43

  • wyyl1

    加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。注意,这里笔者写的是按部就班地“开始”,而不是按部就班地“进行”或“完成”,强调这点是因为这些阶段通常都是相互交叉的混合式进行的,通常会在一个阶段执行的过程中调用、激活另外一...

    2018-03-06 11:56:21

  • wyyl1

    虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

    2018-03-06 11:27:49

笔记是你写在书页留白边上的内容;是你阅读中的批注、摘抄及随感。

笔记必须是自己所写,不欢迎转载。摘抄原文的部分应该进行特殊标明。

深入理解Java虚拟机(第2版)

>深入理解Java虚拟机(第2版)