
Java虚拟机原理
文章平均质量分 85
Java虚拟机原理
斗锋在干嘛
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Class回收机制深度解析
Class回收条件极其严格,必须同时满足三个条件系统类加载器加载的类几乎不会被回收静态成员会阻止Class被回收自定义类加载器是实现Class卸载的关键热部署和插件化系统需要特别注意Class卸载问题。原创 2025-04-23 08:40:04 · 480 阅读 · 0 评论 -
new一个对象的流程解析
类加载检查 → 内存分配 → 内存初始化 → 设置对象头 → 执行init方法。内存分配时的并发问题:可能出现多个线程同时修改指针位置或空闲列表的情况。:堆内存规整(如使用Serial、ParNew等带压缩整理的收集器)类型指针(指向类元数据的指针,JVM通过它确定对象是哪个类的实例):堆内存不规整(如使用CMS这种基于标记-清除算法的收集器)占位作用(HotSpot要求对象大小必须是8字节的整数倍)将分配到的内存空间初始化为零值(不包括对象头)指针碰撞(规整内存)和空闲列表(不规整内存)原创 2025-04-23 08:36:19 · 725 阅读 · 0 评论 -
JVM类加载过程解析
当使用JDK1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果REF_getStatic、REF_putStatic、REF_invokeStatic的方法句柄,并且这个方法句柄所对应的类没有进行过初始化。当一个类加载器收到类加载请求时,首先不会自己尝试加载,而是委派给父类加载器。只有当父类加载器反馈无法完成加载请求时,子加载器才会尝试自己加载。当初始化一个类时,发现其父类还未初始化,需先触发其父类的初始化。原创 2025-04-23 08:33:53 · 710 阅读 · 0 评论 -
对象回收判断与GC算法深度解析
可预测的停顿时间模型(-XX:MaxGCPauseMillis)无法解决循环引用问题(如A引用B,B引用A)适用于老年代(Serial Old等收集器)将堆划分为多个Region(默认2048个)优先回收价值最大(垃圾最多)的Region。适用于老年代(CMS收集器部分阶段使用)强分代假说(熬过多次GC的对象难以消亡)G1可设置最大停顿目标(默认200ms)G1通过压缩避免碎片(类似标记-整理)适用于新生代(ParNew等收集器)弱分代假说(绝大多数对象朝生夕死)老年代:标记-清除/标记-整理。原创 2025-04-22 18:21:11 · 920 阅读 · 0 评论 -
StackOverFlowError与OutOfMemoryError深度解析
方法调用层次过深(默认栈深度:Java 1.5+ 约1024-2048层)使用内存分析工具(MAT/JProfiler)只能处理特定场景(如临时大对象分配):-Xss1M(设置1MB栈大小)局部变量表过大(如声明大数组)-Xms256m(初始堆大小)调整栈大小测试(-Xss参数)避免内存泄漏(及时释放引用)方法区(元空间)加载类过多。直接内存(NIO)分配失败。-Xmx2g(最大堆大小)适当增加栈大小(-Xss)合理设置堆大小(-Xmx)限制递归深度(改用循环)避免栈帧过大(拆分方法)原创 2025-04-22 17:50:26 · 531 阅读 · 0 评论 -
StringBuffer与StringBuilder效率深度解析
JIT可能优化掉StringBuilder的堆分配。避免多次扩容(每次扩容代价:数组拷贝+旧数组GC)默认扩容策略:新容量 = 旧容量 * 2 + 2。:每次操作需要获取/释放monitor锁。在Servlet等并发容器中拼接字符串。:无条件选择StringBuilder。在面试中展示对Java基础的深刻理解。:在竞争激烈时可能升级为重量级锁。:省去锁获取/释放的CPU周期。:使用链式调用(JVM会优化):绝对避免使用String拼接。:支持更好的CPU缓存行利用。:避免保证可见性的指令插入。原创 2025-04-22 17:42:45 · 255 阅读 · 0 评论 -
JVM、DVM与ART运行时深度解析
ART:RosAlloc分配器(减少锁竞争):CPU能耗降低20%,执行速度提升3倍。:专有的dex格式(非class文件):并发标记-清除,两次GC导致卡顿明显。:dex格式比class文件紧凑40%:增加50-100%(生成oat文件):将.dex转换为ELF格式的.oat。:多种GC算法可选(G1/CMS等):并行化GC,停顿时间减少50%以上。:支持分代收集,GC停顿时间可配置。:应用安装包体积增大10-20%:平均得分3500(提升67%):改进内存分配器(malloc)原创 2025-04-22 17:24:20 · 568 阅读 · 0 评论