转自:https://www.jianshu.com/p/5946c0a414b5 需要提前了解的知识点: JVM内存模型 JVM垃圾回收算法 下图是JVM内存区域划分的逻辑图 JVM内存区域逻辑图 从图中我们大概了解JVM相关的内存区域。 JVM内存包括区域 Heap(堆区) New Genera ...
分类:
其他好文 时间:
2018-11-03 23:13:52
阅读次数:
205
1. 概念理解 1.1. 并行(Parallel)与并发(Concurrent) 并行:指多个垃圾收集线程并行工作,但此时用户线程仍然处于等待状态 并发:指用户线程与垃圾收集线程同时执行 1.2. Minor GC 与 Major GC Minor GC:指发生在新生代的垃圾收集动作,因为Java对 ...
分类:
其他好文 时间:
2018-10-26 10:34:06
阅读次数:
166
垃圾回收概念和其算法 谈到垃圾回收(Garbage Collection)GC,需要先澄清什么是垃圾,类比日常生活中的垃圾,我们会把他们丢入垃圾箱,然后倒掉。GC中的垃圾,特指存于内存中、不会再被使用的对象,儿回收就是相当于把垃圾“倒掉”。垃圾回收有很多中算法:如 引用计数法、标记压缩法、复制算法、 ...
分类:
编程语言 时间:
2018-10-18 22:09:24
阅读次数:
253
摘要:用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。 Jstat是JDK自带的一个轻量级小工具。全称“JavaVirtualMachinestatisticsmonitorin ...
分类:
Web程序 时间:
2018-10-07 16:47:46
阅读次数:
165
前言 通过上一篇的 JVM 垃圾回收知识,我们了解了 JVM 具体的 垃圾回收算法 和几种 垃圾回收器。理论是指导实践的工具,有了理论指导,定位问题的时候,知识和经验是关键基础,数据可以为我们提供依据。 在线上我们经常会遇见如下几个问题: 内存泄露; 某个进程突然 CPU 飙升; 线程死锁; 响应变 ...
分类:
其他好文 时间:
2018-09-24 19:32:21
阅读次数:
239
前言 在之前的几篇博客中,我们大致介绍了,常见的 垃圾回收算法 及 JVM 中常见的分类回收算法。这些都是从算法和规范上分析 Java 中的垃圾回收,属于方法论。在 JVM 中,垃圾回收的具体实现是由 垃圾回收器(Garbage Collector)负责。 正文 概述 在了解 垃圾回收器 之前,首先 ...
分类:
其他好文 时间:
2018-09-24 19:31:29
阅读次数:
171
前言 前面介绍了Java内存运行时区域,其中 程序计数器、虚拟机栈、本地方法栈 三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性。在这几个区域内不需要 ...
分类:
编程语言 时间:
2018-09-24 13:41:56
阅读次数:
203
关键字约定 Young generation –>新生代 Tenured / Old Generation –>老年代 Perm Area –>永久代 年轻代: 所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年轻代分三个区。一个Eden区,两个 Sur ...
分类:
其他好文 时间:
2018-09-23 13:53:33
阅读次数:
370
相比CMS收集器有两个显著的改进: (1)、 G1收集器是基于“标记-整理”算法实现的收集器,不会产生空间碎片 (2)、 它可以精确地控制停顿,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒。 原理:G1将整个Java堆(包括新生代、老年代)划分为多个大小固定 ...
分类:
其他好文 时间:
2018-09-19 22:00:22
阅读次数:
152
为什么要有垃圾回收 内存资源是有限的,当所需内存不能满足时,需要把不再使用的对象清除掉,否则JVM将无法运行下去 怎么判断对象是否是垃圾 判断对象是否是垃圾,有两种方式:1是标记引用计数,2是根部可达,第一种存在环形引用问题,第二种是JVM目前采用的方式 在根部可达中,哪些对象可以作为根 1栈中引用 ...
分类:
其他好文 时间:
2018-09-12 15:52:56
阅读次数:
147