![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
w547963
这个作者很懒,什么都没留下…
展开
-
JVM 类加载机制/类加载器
类加载机制/类加载器 类声明周期 验证阶段 文件格式验证: 基于二进制流,只有这一步是基于二进制流,后续步骤都是基于方法区数据 1.魔数: cafe babe 开头 2.主次版本是否在当前JVM支持范围 3.常量池的常量是否不被支持 4.....很多很多规范 元数据验证 1.类是否有父类,(Object) 2.匪类是否继承了被final修饰的类 3......各种其他验证 字节码验证 符号引用验证 准备阶段 准备静态i 解析阶段 JVM将常量池内的符号引用替换为直接引用的过程 1.类/接口解析 2原创 2020-07-31 19:08:30 · 96 阅读 · 0 评论 -
JVM 垃圾回收机制及算法(二) 笔记
JVM垃圾回收二 并发标记,三色标记 并发标记: 程序一边执行,垃圾回收器一边进行标记 三色标记,CMS,G1都使用: 1.黑色 表示对象本身及子对象都被扫描过 2.灰色 表示对象本身被标记过 3.白色 未被扫描到的对象(表示与根对象不可达) 三色标记的问题 漏标记问题, 本不应该被回收的对象,被回收掉了 有个对象C, 被B引用, 还有个对象A 垃圾回收器1线程:扫描到A,标记A为黑色, 垃圾回收区2线程:扫描到B,标记B为灰色,此时还未扫描到B下的C对象, ---!!!!此时,A引用了C, B把原创 2020-07-28 19:29:51 · 128 阅读 · 0 评论 -
JVM 垃圾回收机制及算法(一) 笔记
JVM垃圾回收 分代回收理论: 1.大多数对象都是"朝生夕死" --新生代 2.经历过多次GC而没被回收的对象越难以回收 --老年代 复制算法 copying 1.实现简单 2.无内存碎片 3.利用率为50% 4.需要调整指针 Eden区的来源 1.基于appel式回收,Eden与s1,s0的比值8:1:1,利用率从50%提升到90% 2.提高空间利用率,空间分配担保(由老年代来兜底) 标记-清除算法 Mark-Sweep 1.位置不连续,会产生碎片 2.效率比较低 3.需要扫描两次,需要整理碎片原创 2020-07-26 19:48:19 · 159 阅读 · 0 评论 -
JVM 深入理解内存区域,对象,引用 笔记
JVM 内存区域深入 用到的一些VM参数: -Xms30m 堆初始内存 -Xmx100m 堆最大内存 -XX:MaxMetaspaceSize=30m 最大元空间内存 -XX:+UseConcMarkSweepGC 开启 -XX:-UseCompressdOops 关闭对象指针压缩 JHSDB: 可视化的映射JVM运行信息的工具 复制sawindbg.dll 到jdk/bin下 目录到lib下,启动: java -cp ./sa-jdi.jar sun.jvm.hotspot.HSDB 栈的优化技原创 2020-07-23 10:52:11 · 109 阅读 · 0 评论 -
JVM 基础概念,内存模型 笔记
JVM 基础 运行时数据区–把内存虚拟化 1.线程私有区 (虚拟机栈, 本地方法栈, 程序技术器) 2.线程共享区(方法区->运行时常量池(1.7 永久代, 1.8 元空间), 堆) 3.直接内存 常量池 1.静态常量池: 记录在class文件 constant pool中的常量 2.运行时常量池: class加载中-->符号引用(代码中)转换为直接引用(实际内存地址) 字面量 String a="1111aaaa"; 虚拟机栈 1.大小限制 -Xss 2.栈溢出 直接内存(堆外内原创 2020-07-19 20:05:36 · 76 阅读 · 0 评论