JVM
文章平均质量分 85
圣斗士Morty
Java开发者,技术学习爱好者,费曼技巧学习法践行者
展开
-
JVM垃圾收集器——G1
导航引言一、G1 介绍1.1 适用场景1.2 设计初衷1.3 关注焦点1.4 工作模式1.5 堆的逻辑结构1.6 主要收集目标1.7 停顿预测模型1.8 拷贝和压缩1.9 与 CMS 和 Parallel 收集器的比较1.10 固定停顿目标二、G1 的逻辑分区三、G1 的工作过程3.1 YGC3.2 Mixed GC引言本文针对 Hotspot 虚拟机的 G1 垃圾收集器进行总结和归纳,适用于JDK 8。文章内容以 Garbage-First Garbage Collector 和 Garbage-F原创 2021-08-31 21:45:45 · 876 阅读 · 0 评论 -
JVM——对象的创建与内存布局
导航一、对象的创建过程二、对象的内存布局2.1 内存布局2.2 计算对象的内存大小三、对象的定位3.1 句柄池3.2 直接指针四、对象的分配过程一、对象的创建过程对象,又叫实例,是 OOP 的最常用角色。如何创建一个对象?一般都是使用 new 关键字搭配对象的构造函数:// 基类的创建Object obj = new Object();// 普通用户对象的创建User user = new User("Tom", 29);// 服务类对象的创建Service svic = new Serv原创 2021-07-25 11:44:24 · 327 阅读 · 0 评论 -
JVM——CPU缓存架构与Java 内存模型
导航一、现代计算机存储器的层次结构二、JMM Java 内存模型一、现代计算机存储器的层次结构二、JMM Java 内存模型JMM 全称是 “Java Memory Model”,Java 内存模型。JMM 中规定所有的变量都存储在主内存 (Main Mem)中,每条线程都有自己的工作内存(Work Mem),工作内存中保存的是线程的变量从主内存中的拷贝副本,线程对变量的读和写都必须在工作内存中进行。...原创 2021-07-20 22:09:10 · 1317 阅读 · 6 评论 -
Java 的混合执行模式
导航解释执行与编译执行总结解释执行与编译执行Java 虽然是先编译再运行,但实际上,对于 JVM 来说,依然是逐条解释执行字节码文件中的指令,即大部分情况下,Java 都是解释执行的。JVM通过 interpreter 解释器解释执行字节码指令,JIT(just in time) 编译器可以在某些情况下实现即时编译。它可以将Java 代码编译成本地代码,例如直接编译为 exe 文件,提高执行效率。简单的来说,JVM 会针对热点代码进行即时编译。例如在一个循环场景中,JVM 会对方法调用进行计数,如原创 2021-07-19 22:40:41 · 721 阅读 · 0 评论 -
JVM——详解类加载过程
导航一、过程概述二、Loading2.1 类加载器2.2 双亲委派机制2.3 内存中的描述三、Linking四、Initializing一、过程概述java 源文件编译后会生成一个 .class文件存储在硬盘上。在程序运行时,会将用到的类文件加载到 JVM 内存中。从磁盘到内存的过程总共分为三个步骤:加载、连接、初始化。LoadingLinkingInitializing二、LoadingLoading 过程是把一个 class 文件加载到内存中去。2.1 类加载器JVM 加载类原创 2021-07-19 22:23:08 · 329 阅读 · 2 评论 -
自定义类加载器
导航一、loadClass(String) 方法二、findClass(String) 方法三、自定义类加载器四、打破双亲委派机制一、loadClass(String) 方法想要把一个类加载到内存中,只需要调用 ClassLoader 的 loadClass 方法:public class TestLoadClass { public static void main(String[] args) throws ClassNotFoundException { Class<原创 2021-07-18 17:58:41 · 268 阅读 · 1 评论 -
关于 OutOfMemoryError 的总结与解决方法
引言本文总结自周志明的《深入理解Java虚拟机》第二章部分内容。这部分内容,可以为后续性能调优方面的工作起到铺垫作用。一、什么是 OutOfMemoryErrorOurOfMemory 简称“OOM”, 直译为“内存耗尽”或“内存溢出”,当然,并不是真的内存耗尽了,它指的是 JVM 的几个逻辑分区的内存不够用了。在 JVM 的几个主要内存分区中(JVM 栈、本地方法栈、计数器、...原创 2020-03-28 19:01:16 · 5570 阅读 · 0 评论 -
JVM 运行时数据区域总结
引言本博客总结自《深入理解 Java 虚拟机》,第二章。一、概述Java 虚拟机在执行 Java 程序的时候会把它所管理的内存划分为若干个不同的数据区域。记忆口诀:两栈一计数,一堆一方法。解释:第一句两栈分别是VM栈和本地方法栈,一计数指的是程序计数器,它们都是线程私有;后一句,一堆指的是Java堆,一方法指的是方法区,这两个区域是线程共享。二、程序计数器程序计...原创 2017-09-23 11:24:13 · 313 阅读 · 0 评论