随笔分类 - JVM
摘要:
GC日志解读解析 示例代码 package jvm.test1; import java.util.Random; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.LongAdder; /** * GC
阅读全文
![[JVM]GC日志解读解析](https://img2023.cnblogs.com/blog/1456590/202310/1456590-20231022235406182-1142968503.png)
摘要:
关于swap的理解 概念 swap就是内存交换的意思。 计算机内存分为物理内存和虚拟内存。物理内存就是计算机实际内存的大小;虚拟内存是磁盘空间里开辟出一部分,是虚拟出来的内存空间,所以也叫磁盘缓存。 虚拟内存使得计算机在内存不够的情况可以得到部分解决。 程序运行的时候会在虚拟内存与物理内存之间进行替
阅读全文
![[JVM]关于swap的理解](https://img2023.cnblogs.com/blog/1456590/202310/1456590-20231009183844320-929464779.png)
摘要:
当JVM需要用到某个类的时候,虚拟机会加载它的.class文件。加载了相关的字节码信息之后,会常见对应的Class对象,这个过程就被称为类加载。
需要注意的是:类加载机制只负责`class`文件的加载,至于是否可以执行,则是由执行引擎决定的。
类的加载过程被分为五个阶段:加载、验证、准备、解析、初始化。验证、准备、解析三个阶段为连接步骤。其中加载、验证、准备、初始化这几个阶段的顺序是确定的,但是解析阶段不一定,在某些情况下可以在初始化阶段之后再开始。
阅读全文
![[JVM] JVM的类加载机制](https://img2022.cnblogs.com/blog/1456590/202206/1456590-20220612225641204-553127134.png)
摘要:
逃逸分析是目前Java虚拟机中比较前沿的优化技术,也是JIT中一个很重要的优化技术。
它其实就是分析一个对象是否会逃逸出方法,分析对象的动态作用域。如果一个对象在一个方法内定义,并且有可能被方法外部引用使用,那认为它逃逸了。
阅读全文
![[JVM]逃逸分析](https://img2022.cnblogs.com/blog/1456590/202206/1456590-20220605233113281-1155554260.png)
摘要:
CPU缓存一致性协议 CPU高速缓存 CPU缓存是位于cpu和内存之间的临时数据交换器,它的容量比内存小的夺但是交换速度要比内存快得多,主要是为了解决cpu运行时的处理速度与内存读写速度不匹配的问题。 cpu在执行指令时需要从内存中获取所需要的指令和数据,但是cpu的处理速度远大于内存的读写速度,所
阅读全文
![[JVM] CPU缓存一致性协议](https://img2022.cnblogs.com/blog/1456590/202206/1456590-20220605230527813-1745417758.png)
摘要:
Java内存分配 程序计数器 程序计数器是一块较小的内存区域,作用可以看做是当前线程执行的字节码的位置指示器。分支、循环、跳转、异常处理和线程恢复等基础功能都需要依赖这个计算器来完成。 虚拟机栈 虚拟机栈也叫栈内存,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说
阅读全文
![[JVM] Java内存分配](https://img2022.cnblogs.com/blog/1456590/202206/1456590-20220605230620649-808492473.png)