![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 85
我愿成为你头顶的云
学无止境,尽量减少自己的无知。
展开
-
JVM中的垃圾收集器
JVM中的垃圾收集器1、Serial收集器2、ParNew收集器3、Parallel Scavenge收集器4、Serial Old收集器5、Parallel Old收集器6、CMS收集器7、G1收集器 JVM中存在7种垃圾收集器: Serial收集器 ParNew收集器 Parallel Scavenge收集器 Serial Old收集器 Parallel Old收集器 CMS收集器 G1收集器 1、Serial收集器 Serial收集器是最基本,发展最悠久的收集器,在JDK1.3.1之前是虚拟机新生原创 2021-03-06 23:09:01 · 84 阅读 · 0 评论 -
JVM中常用的垃圾回收算法
常用的垃圾回收算法1、标记-清除算法2、复制算法3、标记-整理算法4、分代收集算法(重要) JVM中的垃圾回收算法有很多,常用的有4种:标记清除算法、复制算法、标记整理算法、分代收集算法。 1、标记-清除算法 最基础的收集算法是标记-清除算法,分为标记和清除两个阶段。第一步标记出所要回收的对象,在标记完成后统一回收所有被标记的对象。之所以说它是最基本的垃圾收集算法,原因在于其他的算法也是基于这种思路并对其不足做以改进得到的。 主要问题有两个:第一个是效率问题,标记和清除的效率都不高。第二个是空间分配问题,标原创 2021-03-06 22:35:13 · 172 阅读 · 0 评论 -
JVM中对象的引用方式
JVM中对象的引用1、强引用2、软引用3、弱引用4、虚引用 无论是通过引用计数器判断的引用数量,还是通过可达性分析判断出的引用链是否可达,判定对象是否存活都跟引用有关。 在JDK1.2以前,引用被定义为当一个reference类型的数据代表的是另外一块内存的起始地址,该类型的数据被称之为引用,这种定义很纯粹,但是也很狭隘,一个对象在这种定义下只有被引用和没有被引用两种状态。对于描述一些“食之无味,弃之可惜”的对象就显得无能为力。我们希望能描述这类对象,当内存足够的时候,将它存放在内存中,当内存空间进行垃圾回原创 2021-03-06 22:15:38 · 122 阅读 · 0 评论 -
JVM中判断对象已死
判断对象已死1、引用计数器法2、可达性分析算法3、对象存活或死亡 在堆里面存放着各种各类的Java对象,垃圾收集器(Gabage Collection,简称为GC)在对堆进行垃圾回收时,首要就是判断哪些对象还活着,哪些对象已经死去(即不被任何途径引用的对象),GC会回收已经死去的对象。有2种判断对象是否死亡的方法:引用计数器法和可达性分析算法。 1、引用计数器法 简单概括为:给对象添加一个引用计数器,每当有一个地方引用该对象时,计数器+1,当引用失效时,计数器-1,任何时刻,当计数器为0的时候,该对象不再被原创 2021-03-06 22:06:41 · 194 阅读 · 0 评论 -
JVM中的堆栈溢出
JVM中的堆、栈溢出1、堆内存溢出2、栈异常 1、堆内存溢出 常见堆内存溢出的三种情况。 情况一: Java.lang.OutOfMemoryError:Javaheap space 原因:这种是java堆内存不够,一个原因是内存真不够,另一个原因是程序中有死循环。 解决方式:有死循环的话调代码就行了,如果是java堆内存不够的话,可以通过适当调大JVM的配置来解决: <jvm-arg>-Xms3062m</jvm-arg> <jvm-arg>-Xmx3062m<原创 2021-03-06 21:47:27 · 1987 阅读 · 0 评论 -
JVM的内存区域
JVM的内存区域1、内存区域2、运行时数据区2.1、程序计数器2.2、堆2.3、虚拟机栈2.4、本地方法栈2.5、方法区 1、内存区域 对于从事C或者C++的程序员来说,必须对每个对象的整个生命周期负责。但是对java程序员来说,在jvm的自动内存管理机制下,不需要为每一个对象去写delete或者free代码,不容易出现内存泄漏或内存溢出的问题。但正因为java程序员将内存管理权力交给了内存管理机制,所以一旦出现内存泄漏或者内存溢出的问题,在对jvm内存结构不清楚的情况下,排查错误将会成为一项非常复杂且困难原创 2021-03-06 21:24:15 · 88 阅读 · 0 评论 -
JVM的组成
JVM的组成1、JVM的概念2、JVM的组成2.1、类加载器2.2、运行时数据区2.3、执行引擎2.4、本地接口 1、JVM的概念 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,原创 2021-03-06 20:45:39 · 144 阅读 · 0 评论