深入理解JVM
昵称2021
持续学习,与时俱进
展开
-
深入JVM-内存管理
1.运行时数据区jvm运行过程中会将所管理的内存根据用途及创建销毁时间分为若干不同的区域,即如下图所示2.内存区域详解2.1.程序计数器原创 2019-03-13 23:26:39 · 168 阅读 · 0 评论 -
JAVA内存模型
文章目录1.概述2.JAVA内存模型2.1.主内存与工作内存2.2.内存间交互2.3.volatile变量的特殊规则2.4.long和double型变量的特殊规则2.5.原子性、可见性与有序性2.6.先行发生(happens-before)原则1.概述2.JAVA内存模型2.1.主内存与工作内存2.2.内存间交互2.3.volatile变量的特殊规则2.4.long和double型变量...原创 2019-08-31 22:05:46 · 170 阅读 · 0 评论 -
JVM之javac编译器、java语法糖
文章目录1.概述2.javac编译器2.1.javac源码即执行过程2.2.解析与填充符号表2.3.注解处理器2.4.语义分析与字节码生成3.语法糖3.1.泛型与类型擦除3.2.自动装箱、拆箱与遍历循环3.3.条件编译3.4.其他语法糖4.注解处理器简单实现1.概述2.javac编译器2.1.javac源码即执行过程2.2.解析与填充符号表2.3.注解处理器2.4.语义分析与字节码生成...原创 2019-07-16 19:48:30 · 845 阅读 · 0 评论 -
JVM字节码执行引擎
文章目录1.概述2.运行时栈帧结构2.1.局部变量表2.2.操作数栈2.3.动态连接2.4.方法返回地址2.5.附加信息3.方法调用4.基于栈的字节码解释执行引擎4.1.解释执行4.2.基于栈的指令集与基于寄存器的指令集4.3.基于栈的解释器执行过程1.概述字节码执行引擎是java虚拟机的核心组成之一,虚拟机与物理机都有代码执行能力,物理机执行引擎是建立在处理器、硬件、指令集和操作系统层面上的...原创 2019-06-30 12:30:45 · 246 阅读 · 0 评论 -
JVM执行子系统类加载机制及主动引用被动引用
文章目录1.什么是类加载2.类加载的过程2.1.加载2.2.验证2.2.1文件格式验证2.2.2.元数据验证2.2.3.字节码验证2.2.4.符号引用验证2.3.准备2.4.解析2.5.初始化3.类加载器介绍1.什么是类加载类加载机制就是虚拟机把类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。2.类加载的过程类从被加...原创 2019-06-23 17:59:22 · 252 阅读 · 0 评论 -
JVM参数说明介绍
文章目录1.JVM运行时数据区内存参数说明2.JVM垃圾收集器参数总结1.JVM运行时数据区内存参数说明参数选项-Xms堆的最小值-Xmx堆的最大值(Xms和Xmx设置一致,可以避免堆自动扩展)-Xmn堆中新生代大小-XX:SurvivorRatio设置新生代中Eden和Survivor区域大小比例,如果设置为8,则Eden和两个Survivor区...原创 2019-05-30 14:58:59 · 855 阅读 · 0 评论 -
JDK监控和故障处理工具
文章目录1.概述2.JDK的命令行工具jpsjstatjinfojmapjhatjstack3.JDK的可视化工具JConsoleVisualVM1.概述通常我们定位系统问题时候,都需要一些系统的监控和分析工具来处理线上的运行日志、异常堆栈、GC日志、线程快照、堆转储快照等数据,来达到快速定位解决问题的能力。下面就先介绍一些JDK中国的监控和处理工具。2.JDK的命令行工具jpsjps(...原创 2019-05-26 18:38:15 · 1261 阅读 · 0 评论 -
深入JVM-内存分配策略
JVM中对象的内存分配,基本上是在堆上分配(也可能经过JIT编译后背拆散为标量类型并间接地在栈上分配),对象主要分配在新生代的Eden区,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况下也可能会直接分配在老年代中,分配的规则取决于使用的垃圾收集器的组合及其参数配置。1.对象优先在Eden区分配2.大对象直接进入老年代3.长期存活的对象直接进入老年代4.动态对象年龄判定...原创 2019-05-24 22:25:55 · 193 阅读 · 0 评论 -
深入JVM-垃圾收集器之内存回收
1.前言在JVM内存运行时数据区中程序计数器、虚拟机栈、本地方法栈等三个区域是线程私有的,即线程结束对应的内存就会回收。而方法区和堆则是线程公有的,这部分内存只有在在程序运行期间才会知道创建哪些对象,这部分内存是分配和回收都是动态的,而垃圾收集器所关注的就是这部分内存。2.判断对象是否可回收?堆中存放的几乎都是对象实例,在垃圾收集器对堆回收前需要先判断对象是否已经能够回收。判断对象是否可回...原创 2019-04-24 21:56:02 · 187 阅读 · 0 评论 -
深入JVM-垃圾收集算法与垃圾收集器
1.垃圾收集算法1.1.标记-清除算法1.2.复制算法1.3.标记-整理算法1.4.分代收集算法2.垃圾收集器2.1.Serial收集器2.2.ParNew收集器2.3.Parallel Scavenge收集器2.4.Serial Old收集器2.5.Parallel Old收集器2.6.CMS收集器2.7.G1收集器...原创 2019-05-02 12:24:02 · 177 阅读 · 0 评论 -
深入JVM-理解内存溢出
本文通过几个实例来验证JVM运行时数据区发生OutOfMemoryError(OOM)异常的场景,顺便介绍几个内存相关的基本的虚拟机参数。1.原创 2019-04-10 22:38:33 · 194 阅读 · 0 评论 -
JAVA线程安全与锁优化
文章目录1.概述2.线程2.1.线程的实现方式2.2.java中线程的实现方式3.线程安全3.1.线程安全的强度3.2.线程安全的实现方式4.锁优化4.1.自旋锁与自适应自旋4.2.锁消除4.3.锁粗化4.4.轻量级锁4.5.偏向锁1.概述2.线程2.1.线程的实现方式2.2.java中线程的实现方式3.线程安全3.1.线程安全的强度3.2.线程安全的实现方式4.锁优化4.1.自...原创 2019-09-21 23:28:31 · 260 阅读 · 0 评论