JVM
文章平均质量分 93
Java体系中JVM部分学习积累
梦 * 蝶
不敢直面困难,怎能迎接挑战!
展开
-
字符串常量池StringTable 你真的了解么
本篇目录1、 String的基本特性2、 String的内存分配3、 字符串拼接操作3.1 字符串拼接3.2 拼接操作与append的效率对比4、 intern()的使用4.1 new String("ab")会创建几个对象,new String("a")+new String("b")呢4.2 关于String.intern()的问题4.3 总结String的intern()的使用1、 String的基本特性• String:字符串,使用一对""引起来表示。• String sl = "hell原创 2021-08-11 15:34:51 · 1041 阅读 · 4 评论 -
垃圾回收③---垃圾回收器
本篇目录1、GC的分类与性能指标1.1 GC分类1.2 评估GC的性能指标1.2.1 吞吐量1.2.2 暂停时间2、不同垃圾回收器概述2.1 垃圾收集器发展史2.2 7款经典的垃圾收集器2.3 7款经典的垃圾收集器与垃圾分代之间的关系2.4 垃圾收集器的组合关系2.5 查看默认的垃圾收集器3、Serial回收器:串行回收3.1 概述3.2 优势4、ParNew回收器:并行回收5、Parallel回收器:吞吐量优先5.1 概述6、CMS回收器:低延迟、并发回收6.1 概述6.2 工作过程6.3 CMS的优点原创 2021-08-11 11:22:44 · 2001 阅读 · 1 评论 -
本地方法接口
本篇目录本地方法为什么要使用Native Method使用现状本地方法简单来讲,一个Native Method就是一个java接口用非java代码的接口,一个Native Method 是这样一个java方法:该方法的实现由非Java语言实现,比如C。这个特征并非java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern “C” 告知C++ 编译器去调用一个C的函数。在定义一个native method时,并不提供实现体(有些像定义一个Java interface),因为其实原创 2021-08-09 14:54:50 · 629 阅读 · 2 评论 -
垃圾回收②---相关概念
本篇目录1、System.gc()的理解1.1 手动GC理解不可达对象的回收行为2、内存溢出与内存泄漏2.1 基本介绍2.2 内存溢出2.3 内存泄漏(Memory Leak)2.3.1 举例3、Stop The World4、垃圾回收的并行与并发4.1 并发(Concurrent)4.2 并行(Parallel)4.3 两者对比4.4 垃圾回收的并发与并行5、安全点与安全区域5.1 安全点(Safepoint)5.2 安全区域(Safe Region)6、引用6.1 基本了解6.2 强引用: 不回收6.3原创 2021-08-08 14:26:30 · 340 阅读 · 1 评论 -
垃圾回收①---概述+相关算法
本篇目录1、概述1.1 什么是垃圾1.2 为什么需要GC1.3 早期垃圾回收1.4 Java垃圾回收机制2、垃圾回收相关算法2.1 垃圾标记阶段:对象存活判断2.2 标记阶段算法1_引用计数法(Java没有采用)2.3 标记阶段算法2_可达性分析算法2.3.1 GC Roots2.4 对象的finalization机制2.4.1 对象是否死亡2.4.2 判断是否可以回收过程2.4.3 代码测试可复活对象2.4.4 分析OOM2.5 清除阶段算法1_标记-清除2.5.1 背景2.5.2 执行过程2.5.3原创 2021-08-07 21:10:54 · 1060 阅读 · 15 评论 -
执行引擎
本篇目录1、概述2、Java代码编译和执行的过程2.1 解释器、编译器2.2 为什么说Java是半编译半解释型语言3、基础回顾3.1 机器码3.2 指令指令集3.3 汇编语言3.4 高级语言字节码4、解释器现状5、JIT编译器5.1 HotSpot VM 为何解释器与JIT编译器共存解释器依然能存在的必要性HostSpot JVM的执行方式5.2 JIT编译器介绍概念解释热点代码及探测方式方法调用计数器回边计数器HotSpot VM 可以设置程序执行方式HotSpot VM 中的JIT分类C1和C2编译器不原创 2021-08-07 11:49:09 · 358 阅读 · 10 评论 -
运行数据区③---方法区
本篇目录1. 堆、栈、方法区的交互关系1.1 运行时数据区结构图1.2 堆、栈、方法区的交互关系2. 方法区的理解3. 设置方法区大小与OOM3.1 设置方法区大小3.2 方法区OOM4. 方法区的内部结构4.1 类型信息4.1 域信息(成员变量)4.3 方法信息non-final的类变量4.4 运行时常量池常量池运行时常量池5. 方法区的使用举例6. 方法区的演进细节永久代为什么要被元空间替换StringTable 为什么要调整7. 方法区的垃圾回收8. 总结1. 堆、栈、方法区的交互关系1.1 运行原创 2021-08-07 10:28:43 · 1776 阅读 · 75 评论 -
运行数据区②---堆
本篇目录1. 核心概述1.1 配置jvm及查看jvm进程1.2 分析SimpleHeap的jvm情况1.3 堆的细分内存结构JDK 7以前: 新生区+老年区+永久区JDK 8以后: 新生区+老年区+元空间2.设置堆内存大小与OOM2.1 查看堆内存大小2.2 堆大小分析2.3 OOM3.年轻代与老年代4.图解对象分配过程4.1 一般分配过程4.2 对象分配的特殊情况4.3 常用调优工具5.Minor GC、Major GC、Full GC5.1 年轻代GC(Minor GC)触发机制:5.2 老年代GC(M原创 2021-08-06 17:08:40 · 2075 阅读 · 49 评论 -
运行数据区 ① --- 程序计数器+虚拟机栈+本地方法栈
本篇目录回顾01 内存02 分区03 线程JVM系统线程1、程序计数器(PC寄存器)1.1 作用1.2 代码示例2、虚拟机栈2.1 概述2.1.1 背景2.1.2 内存中的堆与栈2.1.3 虚拟机栈是什么2.1.4 栈的特点2.1.5 栈中可能出现的异常2.1.6设置栈的内存大小2.2 栈的存储结构和运行原理2.2.1 概述2.2.2 栈帧的内部结构2.3 局部变量表(Local Variables)2.3.1 概述2.3.2 变量槽slot的理解与演示2.3.3 slot的重复利用2.3.4 静态变量与局原创 2021-08-06 11:06:49 · 666 阅读 · 59 评论 -
类加载子系统
本篇目录JVM结构图1. 类加载子系统作用1.1 类加载器ClassLoader角色1.2 加载1.3 链接1.3.1 验证:1.3.2 准备1.3.3 解析1.4 初始化2. 类加载器分类2.1 自定义类与核心类库的加载器2.2 虚拟机自带的加载器2.3 用户自定义类加载器3. ClassLoader的常用方法及获取方法3.1 ClassLoader类3.2 ClassLoader继承关系3.3 获取ClassLoader的途径4. 双亲委派机制4.1 双亲委派机制工作原理4.2 双亲委派机制的优势5.原创 2021-08-05 23:05:24 · 777 阅读 · 35 评论 -
jvm基本介绍
JVM的位置)一些JVM• SUN Classic• Exact VM• HotSpot VM :HotSpot指热点代码探测技术• BEA JRockit:(BEA 已被Oracle收购) 专注于服务端应用,世界最快的jvm之一• IBM J9• Taobao JVM: 目前已经在淘宝、天猫上线,替换了Oracle官方JVM;• Graal VM: Oracle 2018年4月公开,口号 Run Programs Faster Anywhere.最可能替代HotSpot的产品Andro原创 2021-08-05 19:38:56 · 685 阅读 · 1 评论