
Java虚拟机
Alger_charset
这个作者很懒,什么都没留下…
展开
-
Java内存区域与内存溢出异常
执行java程序时会把她所管理的内存分为若干不同的数据区域,分别是程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。 第一部分:Java内存区域 程序计数器 1)程序计数器是当前线程所执行的字节码的行号指示器。通过这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。 2)程序计数器是线程私有的,由于Java虚拟机的多...原创 2018-09-19 18:22:35 · 157 阅读 · 0 评论 -
Java内存分配策略与垃圾收集器
判断对象是否死亡的方法 1)引用计数算法 给对象添加一个引用计数器,每当一个地方引用它时,计数器加1,当引用失效,计数器减1,任何时刻计数器为0的对象就是不可能再被使用。然而主流的Java虚拟机里面没有选用引用计数算法来管理内存,因为无法解决对象之间相互循环引用的问题。 2)可达性分析算法 以一系列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为引用链,当一个对...原创 2018-10-18 15:31:41 · 240 阅读 · 0 评论 -
虚拟机类加载机制
1.类加载的时机 类从被加载到虚拟机内存中开始到卸载出内存为止,它整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载这7个阶段。验证、准备、解析统称为连接。 有5种情况必须立即对类进行“初始化”: 遇到new、getstatic、putstatic、或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发初始化。对应的java代码场景是:使用new关键字实例化...原创 2018-11-28 14:37:06 · 228 阅读 · 0 评论