JVM
logiter
这个作者很懒,什么都没留下…
展开
-
JVM:动态链接
动态链接在程序运行时将符号引用解析为实际的内存地址。这个过程主要发生在方法调用时,方法只有运行时调用了之后才会从字节码加载进内存,这个时候才能确定具体的内存地址,JVM需要将字节码中的符号引用(编译期解析出来的)解析为具体的方法、字段或类的地址。这种解析结果存储在运行时常量池中(注意区分class文件的常量池和JVM的运行时常量池),在栈帧的动态链接中存储指向运行时常量池的实际地址的引用,以支持快速访问。在a调用b的时候,存储在a的栈帧中的动态链接,其实是指向b存储在运行时常量池的实际地址的引用!原创 2024-07-05 08:35:02 · 332 阅读 · 0 评论 -
JVM:开启指针压缩后,对象位置的寻址计算
指针压缩的技术会将Java程序中的所有引用指针(类型指针、堆引用指针、栈帧内变量引用指针等)都会压缩一半,而在Java中一个指针的大小是占一个字宽单位的,在64bit的虚拟机中一个字宽的大小为64bit,所以也就意味着在64位的虚拟机中,指针会从原本的64bit压缩为32bit的大小。具体原理就是,以64位虚拟机为例,由于Java会进行内存对齐,以8byte为单位对齐,所有对象的起始地址都是8字节的整数倍。所以指针的低位都是000,可以省略。原创 2024-07-06 11:06:09 · 438 阅读 · 0 评论