![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
lmkbuffon
永言配命,自求多福
展开
-
JVM运行时数据区
目录 JVM运行时数据区 线程私有 程序计数器(Program Counter Register) Java虚拟机栈 本地方法栈(NativeMethodStack) 线程间共享 Java堆 方法区(MethodArea)/永久带 运行时常量池(RunningConstantPool) JDK1.8废弃永久带替换为元空间 Java虚拟机有自动内存管...原创 2019-06-29 23:41:27 · 104 阅读 · 0 评论 -
对象的内存布局
对象的创建 对象的内存布局 对象头 实例数据 对齐填充 对象的访问定位 句柄访问 直接指针访问 对象的创建 虚拟机遇到一个new指令时, 首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用, 并检查这个符号引用代表的类是否已经被加载, 如果没有, 必须先执行相应的类加载过程. 在类加载检查通过后, 接下来虚拟机为新生对象分配内存. 为对象分配内存的任...原创 2019-06-30 00:09:10 · 99 阅读 · 0 评论 -
Unsafe类
目录 Unsafe的主要功能 操纵对象属性 操作数组元素 线程挂起与恢复、CAS 总结 Unsafe的主要功能 Unsafe的初始化方法,这是一个单例模式: private Unsafe() {} private static final Unsafe theUnsafe = new Unsafe(); public static Unsafe getUnsafe(...原创 2019-06-30 22:04:49 · 629 阅读 · 0 评论 -
JVM 发生 OOM 的 8 种原因、及解决办法
目录 堆内存不足 原因 解决方法 永久代/元空间溢出 原因 解决方法 GC overhead limit exceeded 原因 解决方法 方法栈溢出 原因 解决方法 非常规溢出 分配超大数组 swap区溢出 本地方法溢出 撸Java的同学,多多少少都会碰到内存溢出(OOM)的场景,但是造成OOM原因却不止一个。 堆内存不足 这种场景最为常见,报错信息: ...原创 2019-08-04 16:52:38 · 960 阅读 · 0 评论 -
Java异常学习笔记
目录 异常族谱 Error Exception checked unchecked 例子:NoClassDefFoundError和ClassNotFoundException Java 的异常处理机制 try catch finally 异常处理的两个基本原则 Throw early和catch late 自定义异常 异常族谱 Exception 和 E...原创 2019-08-05 17:27:06 · 200 阅读 · 0 评论 -
自旋锁、排队自旋锁、MCS锁、CLH锁
目录 自旋锁 TICKET LOCK MCS锁 CLH锁 CLH锁 与 MCS锁 的比较 惊群效应 自旋锁 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。 自旋锁适用于锁保护的临界区很小的情况,临界区很小的话,锁占用的时间就很短。 简单实现 import java.util.concurrent.a...原创 2019-07-18 15:06:44 · 371 阅读 · 0 评论 -
Java内存模型(JMM)
缓存一致性 在多处理器的系统中,每个处理器都有自己的高速缓存,而他们又共享同一主内存,如何保证缓存内部数据的一致,不让系统数据混乱。 JMM 在Java语言中,多个线程之间采用的是共享内存模型来实现多线程之间的信息交换和数据同步的,Java虚拟机规范试图定义一种Java内存模型来屏蔽叼各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 Java内存模型...原创 2019-08-20 14:55:29 · 156 阅读 · 0 评论