
JVM学习笔记
文章平均质量分 78
MustangJy
这个作者很懒,什么都没留下…
展开
-
JVM学习笔记(1) 由Java对象加载步骤看Java内存区域
Java虚拟机所管理的内存会包括以下几个运行时数据区域: 其中除了程序计数器之外,其余的区域都可能会出现内存溢出错误。 1.程序计数器:描述的是当前线程所执行的字节码的行号指示器。如果线程在执行的是一个Java方法,则这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果执行的是Native方法,这个计数器则为空(Undifined)。 2.Java虚拟机栈:描述的是Java方法执行的内存...原创 2018-10-18 22:38:27 · 215 阅读 · 0 评论 -
JVM学习笔记(2) 垃圾收集器与内存分配策略
Java技术体系中所提倡的自动内存管理,最终可以规划为自动化地解决了两个问题:给对象分配内存、以及回收分配给对象的内存。 一、回收内存:垃圾管理器(GC,Garbage Collector) 关于G1收集器,详细的内容可以参照:详解 JVM Garbage First(G1) 垃圾收集器 二、内存分配与回收策略 对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量...原创 2018-10-23 17:05:40 · 4094 阅读 · 0 评论 -
JVM学习笔记(4) 线程安全 & 虚拟机的同步实现与锁优化
写在前头的重点总结: 线程安全的程度:大部分的线程安全类都不是绝对安全而是相对安全的,需要保证这个对象单独的操作是线程安全的,在调用时不需要做额外的保障措施;但是对于一些特定顺序的连续调用,就可能需要在调用端使用额外的同步手段保证调用的正确性。 线程安全的实现方法: 互斥\阻塞同步(synchronized、重入锁ReentrantLock);非阻塞同步——基于冲突检测的乐观并发策略,需要操作...原创 2019-01-23 21:40:44 · 225 阅读 · 0 评论 -
JVM学习笔记(3) Java内存模型与volatile关键字 & 线程的实现、调度
内存模型的相关概念 并发编程中的三个概念:可见性、原子性、有序性 Java内存模型:主内存、线程的工作内存 深入剖析volatile关键字:lock前缀指令——内存屏障,保证有序性,不保证原子性——无法替代synchronized 使用volatile关键字的场景:状态标记量、双重检测 以上参考: Java并发编程:volatile关键字解析 可以说是写的很到位了~ 上文中特别需...转载 2019-01-22 16:23:12 · 546 阅读 · 2 评论 -
【有疑问,结论待定】JDK8 Java字符串常量池在Java堆中而不是方法区?
String.intern()方法的作用是返回一个字符串引用,引用的是字符串常量池中的字符串(字面量),所以我们可以通过这个方法来测试,使得字符串常量池内存溢出,看看这个时候报错报的是哪里out of memory。 import java.util.ArrayList; public class StringConstancePool { public static void ma...原创 2019-02-28 21:14:10 · 12230 阅读 · 10 评论