随笔分类 -  JVM

JVM底层原理和JVM底层代码
摘要:问题一:Java的每个类被加载到JVM中,他们对应的C++类是什么? 答:klass模型 问题二:在JDK8中,Java类存储在方法区还是堆区? 普通的Java类,在JVM中对应的C++类是InstanceKlass,存储在方法区(String) Java类对应的Class对象,在JVM中对应的C+ 阅读全文
posted @ 2022-08-17 15:36 极客子羽 阅读(161) 评论(0) 推荐(0) 编辑
摘要:native start0追踪到hotspot源码中 private void native start0(); native的原理是调用 JNI,而 Hotspot 源码的惯例则是,通常一个 Xxx.java 对应一个 Xxx.c, 以下举三个例子: | Java 类 | 相对于OpenJDK源码 阅读全文
posted @ 2022-08-14 22:05 极客子羽 阅读(148) 评论(0) 推荐(0) 编辑
摘要:1、下载要编译的源码 2、下载和解压jdk7 3、配置环境变量 4、apt-get安装依赖 5、执行configure & make 6、CLion单步调试需要用到CMakeLists.txt,以及Run/Debug 按钮都是灰色不可用(Toolchains明明已经配置好了) 阅读全文
posted @ 2022-08-12 15:50 极客子羽 阅读(429) 评论(0) 推荐(1) 编辑
摘要:实现参考自 openjdk/hotspot/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp long cmpxchg(long exchange_value, volatile long* dest, long compare_value); 阅读全文
posted @ 2022-08-11 14:34 极客子羽 阅读(583) 评论(0) 推荐(0) 编辑
摘要:学习文档:Windows10上启动HSDB并查看运行时数据 #50 一、启动 HSDB Windows 在桌面上新建文本格式的 hsdb.bat 文件,然后双击启动该程序: java -cp %JAVA_HOME%\lib\sa-jdi.jar sun.jvm.hotspot.HSDB Ubuntu 阅读全文
posted @ 2022-08-01 11:53 极客子羽 阅读(443) 评论(0) 推荐(1) 编辑
摘要:硬核子牙公众号原文:你知道如何计算Java的对象大小吗 本文基于子牙老师的讲解,用来记录本人的理解。 一、理论篇 本文计算的是Java对象在 堆区 的大小。学习和掌握该知识,有助于分析**“应用系统的堆到底该设置为多大?”**的问题。 接着,我整理了一张思维导图,来对对象结构中的各部分大小进行解释: 阅读全文
posted @ 2022-08-01 10:19 极客子羽 阅读(826) 评论(0) 推荐(0) 编辑
摘要:一、背景 在Java手写JVM时,需要读取 .class 后缀的字节码文件。当把字节码文件以 byte[](比特数组)的形式读取到内存中时,数组前四个字节为 0xCAFEBABE。 如何判断我读取的四个字节的值等于 0xCAFEBABE 呢? 二、单个字节转int 2.1 正确代码 public c 阅读全文
posted @ 2021-11-18 23:09 极客子羽 阅读(1230) 评论(0) 推荐(0) 编辑