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