![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
Ruhr
Whatever It Takes!
展开
-
【JVM】一、Java内存区域的介绍
注:本文资料收集自网络,一部分资料来源于大佬NO0b的博客,原博文链接:点我 JDK:Java开发工具 | JRE:Java运行环境 | JVM:Java虚拟机 (对应平台的虚拟机) JVM(Java Virtual Machine),意为Java虚拟机 Java的内存区域 Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域...原创 2019-10-28 15:50:15 · 156 阅读 · 0 评论 -
【JVM】二、Java堆溢出和栈溢出
2.1 Java堆溢出 Java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免来GC清除这些对象,那么在对象数量达到最大堆容量后就会产生内存溢出异常。 可以设置JVM参数:-Xms:设置堆的最小值、-Xmx:设置堆最大值 Java堆内存的OOM异常是实际应用中最常见的内存溢出情况。 当出现Java堆内存溢出时,异常堆栈信息"java.lang....原创 2019-10-28 17:15:34 · 309 阅读 · 0 评论 -
【JVM】三、垃圾回收算法的介绍
3.1 如何判断对象已"死" ? Java堆中存放着几乎所有的对象实例,垃圾回收器在对堆进行垃圾回收前,首先要判断这些对象哪些还存活,哪些已经"死去"。判断对象是否已"死"有如下几种算法 3.1.1 引用计数法 给对象增加一个引用计数器,每当有一个地方引用它时,计数器就+1;当引用失效时,计数器就-1;任何时刻计数器为0的对象就是不能再被使用的,即对象已"死"。 在主流的JVM中没有选用...原创 2019-10-30 10:23:06 · 200 阅读 · 0 评论 -
【JVM】四、垃圾收集器的介绍
如果说上面我们讲的收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 以下讲的收集器基于JDK1.7的G1收集器之后的HotSpot虚拟机,这个JVM包含的所有收集器如下图所示: 两个收集器之间的连线,表示它们可以搭配使用。收集器所处的区域表示它是属于新生代收集器还是老年代收集器。其中ZGC为Java11引入的新的垃圾收集器。 Java各版本默认的收集器 : ...原创 2019-10-29 10:53:58 · 176 阅读 · 1 评论 -
【JVM】五、内存分配与回收策略
注:本文转载自nisen6477的博客,原文链接:点我 Java 体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存、回收分配给对象的内存。 对象的内存分配,往大方向讲就是在堆上分配,对象主要分配在新生代的 Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配。少数情况下也可能直接分配到老年代,分配的规则取决于使用哪一种垃圾收集器组合以及...转载 2019-10-30 09:21:35 · 94 阅读 · 0 评论