
JVM虚拟机
文章平均质量分 76
jvm虚拟机详解
深咖啡的萨克
世间事皆在一念之间。没有信仰就没有敬畏,不敬畏生命不尊重自然。因为有了信仰才有天堂和地狱之分
展开
-
第三章 3.1 3.2 垃圾收集器与内存分配策略概述
文章为 深入理解java虚拟机 第三版 周志明 著 读书笔记 仅供学习交流1 为什么需要垃圾收集器垃圾收集(Garbage Collection 简称GC)。Java内存运 行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈 中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基 本上是在类结构确定下来时就已知的,这几个区域的内存分配和回收都具备确定性, 在这几个区域内就不需要过多考虑如何回收的问题。而Java堆和方法区这两个原创 2021-03-27 20:24:19 · 128 阅读 · 0 评论 -
第二章 2.4虚拟机OOM实战
文章为深入理解java虚拟机 第三版 周志明 著 读书笔记 仅供学习交流1 java堆溢出/** * @Author: QinMY * @Date: 2021/3/26 17:27 * @Des: VM args;-Xms20m -Xmx20m -XX:+HeapDumpOutOfMemoryError */public class HeapOOM { static class OOMObject{} public static void main(String[] ...原创 2021-03-27 11:17:57 · 152 阅读 · 0 评论 -
第二章 2.3HotSpot虚拟机对象探秘
1 对象创建 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有那必须先执行相应的类加载过程,在类加载检查通过后,接下来虚拟机将为新生对象分配内存。 分配内存方法 : 指针碰撞(Bump The Pointer) 内存中间放着一个指针作为分界点的指示器,分配内存就仅仅是把那个指针向空闲空间方向挪动一段与对象大小相等的距离 ...原创 2021-03-26 17:22:40 · 175 阅读 · 1 评论 -
第二章 2.2运行时数据区
文章为深入理解java虚拟机 第三版 周志明 著 读书笔记 仅供学习交流1 运行时数据区1.1 程序计数器 程序计数器是一块较小的内存区域,他可以当做是当前线程所执行字节码的行号指示器。这个区域是唯一一个没有OutOfMemory情况的区域。1.2 Java虚拟机栈 虚拟机栈也是线程私有,它的生命周期和线程相同,每个方法执行的时候,虚拟机栈都会创建一个栈祯用于存储 局部变量表 ,操作数栈,动态链接,方法出口等信息。对这个内存区域规定了两类异常状况:如果线程请求...原创 2021-03-23 10:56:29 · 84 阅读 · 0 评论 -
2020-08-10
前言在介绍垃圾收集器之前,首先介绍以下这几个概念1. Stop-the-world它是指 JVM 由于要执行 GC 而停止了应用程序的执行,并且这种情形会在任何一种 GC 算法中发生。当 Stop-the-world 发生时,除了 GC 的线程以外,其他的线程均处于等待的状态,直到 GC 任务完成。实际上,很多 GC 优化都是通过减少 Stop-the-world 的时间来提高程序的性能。2. Safe-point程序执行时并非在所有地方都能停顿下来开始 GC,只有在某些特定的位置才转载 2020-08-10 17:44:47 · 110 阅读 · 0 评论