JVM
文章平均质量分 95
慕小容mango
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM方法调用
文章目录一、动态链接二、方法调用1.引入库三、虚方法和非虚方法四、虚拟机中提供了以下几条方法调用指令五、关于invoke dynamic指令六、动态类型语言和静态运行语言七、方法重写的本质八、方法返回地址一、动态链接注意:运行时常量池位于方法区中,在JDK1.7及之后版本的JVM已经将运行时常量池从方法区中移了出来,在Java堆中开辟了一块新的区域存放运行时常量池常量池的作用:提供一些符号和常量,便于指令的识别;在每一个栈帧内部中均包含一个指向运行时常量池(Constant Pool)或该栈帧原创 2021-05-16 10:45:43 · 390 阅读 · 0 评论 -
Java垃圾收集器详解
文章目录GC的分类与性能指标评估GC的性能指标吞吐量暂停时间不同的垃圾收集器概述垃圾收集器发展史7款经典的垃圾收集器7款经典的垃圾收集器与垃圾分代之间的关系垃圾收集器的组合关系查看默认的垃圾收集器Serial回收器:串行回收优势ParNew回收器:并行回收Parallel回收器:吞吐量优先参数配置CMS回收器:低延迟CMS的弊端参数设置小结JDK 后续版本中CMS的变化G1回收器:区域化分代式优势缺点参数设置G1的适用场景分区RegionG1垃圾收集器的垃圾收集流程G1收集器的年轻代GCG1垃圾回收的过程原创 2021-04-18 16:54:56 · 463 阅读 · 0 评论 -
JVM本地方法栈与本地方法接口
文章目录一、本地方法接口二、为什么要使用Native Method三、现状四、本地方法栈一、本地方法接口简单来讲,一个Native Method就是一个Java程序调用非Java代码的接口,一个Native Method是这样一个方法:该方法的底层实现并非由Java语言进行编写的,而是C/C++等,这个特征并非Java所特有,很多编程语言都有有这么一种机制,比如在C++中,我们可以用extern "C"来告知C++编译器去调用一个C的函数;在定义一个本地方法时,并不提供实现体(有些类似于定义一个原创 2021-03-11 21:52:27 · 222 阅读 · 0 评论 -
JVM引用
文章目录引用强引用: 不回收软引用: 内存不足即回收弱引用: 发现即回收虚引用: 对象回收跟踪终接器引用引用我们希望能描述这样一类对象:当内存空间还足够时,则能保留在内存中;如果内存空间在进行垃圾收集后还是很紧张,则可以抛弃这些对象。 -【既偏门又非常高频的面试题】强引用、软引用、弱引用、虚引用有什么区别?具体使用场景是什么?在JDK 1.2版之后,Java对引用的概念进行了扩充,将引用分为强引用(StrongReference)、软引用(Soft Reference) 、弱引用(Weak R原创 2021-03-08 10:44:56 · 194 阅读 · 0 评论 -
JVM垃圾回收相关概念
文章目录System.gc()的理解手动GC理解不可达对象的回收行为内存溢出与内存泄漏内存溢出内存泄漏(Memory Leak)举例Stop The World垃圾回收的并行与并发并发(Concurrent)并行(Parallel)二者对比垃圾回收的并发与并行安全点与安全区域安全点(Safepoint)如何在GC发生时,检查所有线程都跑到最近的安全点停顿下来呢?安全区域(Safe Region)System.gc()的理解在默认情况下,通过System.gc()或者是Runtime.gc()的调用原创 2021-03-08 10:42:47 · 371 阅读 · 0 评论 -
JVM垃圾回收算法
文章目录1. 概述什么是垃圾大厂相关面试题为什么需要GC早期垃圾回收Java垃圾回收机制2. 垃圾回收相关算法垃圾标记阶段:对象存活判断2.1 标记阶段:法1_引用计数法 (Java没有采用)2.2 标记阶段:法2_可达性分析算法2.3 对象的finalization机制2.4 MAT与JProfiler的GC Roots溯源2.5 清除阶段:法1_标记-清除算法背景执行流程缺点2.6 清除阶段:法2_复制算法背景核心思想优点缺点应用场景2.7 清除阶段:法3_标记-压缩(整理,Mark-Compact)算原创 2021-03-07 10:13:30 · 296 阅读 · 0 评论 -
JVM字符串常量池StringTable详解
文章目录1. 字符串拼接操作拼接操作与append的效率对比2. intern()的使用new String("ab")会创建几个对象,new String("a")+new String("b")呢关于String.intern()的面试题总结String的intern()的使用练习练习1练习2intern()效率测试3. StrtingTable的垃圾回收4. G1中的String去重操作实现命令行选项1. 字符串拼接操作常量与常量的拼接结果在常量池,原理是编译期优化;常量池中不会存在相同内原创 2021-03-07 10:09:02 · 363 阅读 · 1 评论 -
JVM字符串常量池StringTable的基本概述
文章目录1. String的基本特性2. String的内存分配3. String的基本操作1. String的基本特性String是用一对 “” 引起来表示的字符串;String s1 = “hello”; //字面量的定义方式;String s2 = new String(“hello”);String是被声明为final的,不可被继承;String实现了Serializable接口:表示字符串是支持序列化的;实现了Comparable接口:表示String可以比较大小的原创 2021-03-07 10:05:25 · 189 阅读 · 1 评论 -
JVM垃圾回收算法补充
文章目录1. 分代收集算法2. 增量收集算法、分区算法增量收集算法分区算法小结1. 分代收集算法通过之前的文章我们可以得知,标记—清除算法,标记—整理算法以及复制算法都拥有着各自的优缺点,也都具有各自独特的优势和特点,并没有一种算法可以完全替代其它算法,所以说没有更好的算法,只有更合适的算法;而分代收集算法应运而生;分代收集算法,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。一般是把Java堆分为新生代和老年代,这样就原创 2021-03-07 10:01:49 · 161 阅读 · 0 评论 -
JVM执行引擎
文章目录执行引擎概述Java代码编译和执行过程什么是解释器以及JIT编译器?为什么说Java是半编译半解释性语言?机器码,指令,汇编语言机器码指令指令集汇编语言高级语言字节码C/C++源程序的执行流程解释器现状JIT编译器HotSpot VM为什么解释器与JIT并存解释器依然存在的必要性HotSpot VM的执行方式案例JIT编译器相关概念解释热点代码及探测方式HotSpot VM可以设置程序执行方式测试解释器模式和JIT编译模式HotSpot VM中的JIT分类C1和C2编译器不同的优化策略总结Graal原创 2021-03-04 21:48:08 · 257 阅读 · 1 评论 -
JVM方法区
文章目录1、堆,栈,方法区的交互关系2. 方法区的理解3. 设置方法区大小与OOM4.1、堆,栈,方法区的交互关系运行时数据区结构图(从线程共享与否的角度来看)堆,栈,方法区的交互关系2. 方法区的理解《Java虚拟机规范》中明确说明:尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾或者压缩;但对于HotSpot虚拟机来说,方法区还有一个名字叫做非堆(Non-heap),目的就是要和堆分开;所以方法区可以看作是独立于堆空间的一块内存区域;方法区与堆原创 2021-03-01 13:54:43 · 233 阅读 · 1 评论 -
JVM运行时数据区
文章目录前言一、Java内存的概念JVM的经典内存布局具体的内存划分二、Java的线程与进程Java Runtime APIJava线程JVM系统线程分类前言之前已经学习过了类加载子系统,接下来将会详细地学习运行时数据区 一、Java内存的概念内存是非常重要的系统资源,是硬件以及CPU的中间仓库以及桥梁,承载着操作系统以及应用程序的实时运行。JVM的内存布局规定了Java在运行过程中内存申请,分配,管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。原创 2020-12-12 17:25:20 · 237 阅读 · 0 评论 -
JVM类加载子系统
文章目录类加载子系统细节架构图一、类加载子系统的作用二、类加载子系统功能的细分加载链接验证准备解析初始化,初始化阶段就是执行类构造器方法clinit()的过程三、类加载器的分类四、自定义类与核心类库的加载器类加载子系统细节架构图一、类加载子系统的作用类加载子系统负责从文件系统或者是网络系统等中加载class文件,class文件在文件的开头之中有特定的文件标识,即16进制的模数CA FE BA BE;加载后的Class类信息存放于一块名为方法区的内存空间;除了类信息之外,方法区还会存放运行时常量原创 2020-12-10 16:38:32 · 225 阅读 · 0 评论
分享