jvm
文章平均质量分 89
Ric-ou
学无止境
展开
-
JVM 类加载机制
类加载机制 类是在运行期间第一次使用时动态加载的,而不是一次性加载所有类。因为如果一次性加载,那么会占用很多的内存。 类的生命周期 包括以下 7 个阶段: 加载(Loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始化(Initialization) 使用(Using) 卸载(Unloading) 类加载过程 包含了加载、验证、准备、解析和初始化这 5 个阶段。 1. 加载 加载是类加载的一个阶段,注意不要混淆。 加载过程完成以下三件原创 2021-08-04 15:36:52 · 167 阅读 · 0 评论 -
JVM 内存分配与回收策略
内存分配与回收策略 Minor GC 和 Full GC Minor GC:回收新生代,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。 Full GC:回收老年代和新生代,老年代对象其存活时间长,因此 Full GC 很少执行,执行速度会比 Minor GC 慢很多。 内存分配策略 1. 对象优先在 Eden 分配 大多数情况下,对象在新生代 Eden 上分配,当 Eden 空间不够时,发起 Minor GC。 2. 大对象直接进入老年代 大对象是指需原创 2021-08-04 15:27:28 · 198 阅读 · 0 评论 -
jvm 垃圾收集
垃圾收集 垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。 判断一个对象是否可被回收 1. 引用计数算法 为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。 在两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正是因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。 publ原创 2021-08-04 14:18:18 · 206 阅读 · 0 评论 -
jvm 运行时数据区域
运行时数据区域 程序计数器 记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。 Java 虚拟机栈 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M java -Xss2M HackThe原创 2021-08-04 11:55:25 · 124 阅读 · 0 评论