上一页 1 2 3 4 5 6 7 ··· 11 下一页
摘要: 首先随便找了一个jvm的结构图 类加载器子系统 它包含三个大的阶段 分别是 : 加载(loading) -> 链接(linking) -> 初始化(Initialization) 加载: 通过类的全限定名获取到这个类的二进制字节流 -> 将这个字节流转换成方法区的运行时数据结构 链接: 验证->准备 阅读全文
posted @ 2022-08-07 23:44 dronff 阅读(28) 评论(0) 推荐(0)
摘要: 91-OOM:PermGen和OOM:Metaspace举例_哔哩哔哩_bilibili 阅读全文
posted @ 2022-08-07 22:40 dronff 阅读(20) 评论(0) 推荐(0)
摘要: 注意 右边虚线框内是指ygc的流程 s0/s1区中的变量如果无法放在另一个区,会直接晋升老年代 阅读全文
posted @ 2022-08-07 16:56 dronff 阅读(26) 评论(0) 推荐(0)
摘要: 局部变量在局部变量表中 而局部变量表在栈的栈帧中,栈是每个线程不共享的,所以应该是线程安全的】 还有很多细节 62-虚拟机栈的5道面试题_哔哩哔哩_bilibili 阅读全文
posted @ 2022-08-07 12:16 dronff 阅读(39) 评论(0) 推荐(0)
摘要: 第二段话应该能理解 class把他们所有的引用符号放在一个地方——常量池。每一个class文件有一个常量池,每一个被Java虚拟机装载的类或者接口都有一份内部版本常量池,被称作运行时常量池。运行时常量池是特定与实现的数据结构,数据结构映射到class文件中的常量池。因此,当一个类型被首次装载的时候, 阅读全文
posted @ 2022-08-06 23:25 dronff 阅读(180) 评论(0) 推荐(0)
摘要: 首先 java代码 通过jclasslib查看字节码指令 0 iconst_ 1 将1压入操作数栈中 1 istore_1 取操作数栈顶的数字 存入下表为1的局部变量表中 2 bipush 10 将10压入操作数栈中 4 istore_2 取操作数栈顶的数字 存入下表为2的局部变量表中 5 iloa 阅读全文
posted @ 2022-08-06 22:02 dronff 阅读(40) 评论(0) 推荐(0)
摘要: 局部变量表建立在jvm栈的栈帧中,局部变量表最基本的单位是槽(slot),其个数在编译时就已经定好了, 如图 该方法的局部变量表的大小就应该是args+a=2 使用反编译工具jclasslib查看后确实是2 查看局部变量表的详细信息 起始pc是指字节码指令的行号 它与行号共同构成了该变量的作用域 描 阅读全文
posted @ 2022-08-06 20:43 dronff 阅读(114) 评论(0) 推荐(0)
摘要: (19条消息) 获取class类字节数组的方法_iteye_9747的博客-CSDN博客 public static byte[] loadBytes(Class<?> cls) throws IOException { if (cls == null) return null; String na 阅读全文
posted @ 2022-08-05 00:17 dronff 阅读(17) 评论(0) 推荐(0)
摘要: java类加载器分为 根类加载器 加载 System.getProperty("java.ext.dirs")目录下的类,该类加载器有c++代码实现 扩展类加载器 加载 System.getProperty("java.class.path")目录下的类 该类由java代码实现 系统类加载器 加载用 阅读全文
posted @ 2022-08-04 23:33 dronff 阅读(403) 评论(0) 推荐(0)
摘要: 将proto文件编译成.java文件命令 protoc.exe --java_out=. Student.proto 注意点后面有空格 syntax = 'proto3';option optimize_for = SPEED; // 加快解析option java_package="com.dro 阅读全文
posted @ 2022-08-02 12:51 dronff 阅读(44) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 11 下一页