Java虚拟机的内存区域中,程序计数器、虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭;栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这三个区域的内存分配和回收都具有确定性。垃圾回收重点关注的是堆和方法区部分的 ...
分类:
编程语言 时间:
2018-08-02 02:11:11
阅读次数:
149
Java GC垃圾收集器 概述 这么判断对象已死 引用计数法 可达性分析算法 垃圾回收算法 标记 清除算法 如图 复制算法 如图: 标记 整理算法 如图 分代收集算法 ...
分类:
编程语言 时间:
2018-07-31 00:37:50
阅读次数:
153
前言 通过学习深入理解java虚拟机的教程,以及自己在网上的查询的资料,做一个对jvm学习过程中的小总结。 本文章内容首先讲解java的内存分布区域,之后讲内存的分配原则以及内存的监控工具。再下来会着重讲解垃圾回收这一章节,该章节涉及了垃圾的标记算法以及各种垃圾回收算法,然后大概的介绍下市面上使用的 ...
分类:
编程语言 时间:
2018-07-28 18:18:05
阅读次数:
181
GC日志格式本文是JVM层GC调优(上)的后续,在上一篇文章中,我们介绍了JVM的内存结构、常见的垃圾回收算法以及垃圾收集器和不同收集器中的一些GC调优参数。所以通过上文,我们也对GC相关的内容有了一定的了解。但是光知道一些调优参数是没用的,我们需要能够从GC的日志中去分析可以调优的地方,这样才能使用这些参数去进行相应的调整,所以本小节将介绍一下不同收集器的GC日志格式。我们这里以Tomcat为例
分类:
其他好文 时间:
2018-07-26 21:25:16
阅读次数:
259
前言 简单的针对JAVA虚拟机(JVM)相关知识做一个总结,从此章开始这是一个系列文章,包括内容有; 1 前端编译,AOT(静态编译),JIT即时编译 2 字节码文件的结构,类加载机制以及运行时内存区域 3 关于对象的创建,内存的分配,访问的定位,判断对象是否可用,内存的回收 4 对象内存分配及垃圾 ...
分类:
其他好文 时间:
2018-07-18 17:19:46
阅读次数:
147
垃圾回收算法的好坏直接影响到程序运行效率,接下来对几种常见的回收算法进行介绍。 标记 清除算法(Mark Sweep) 该算法是最基础的收集算法,算法分“标记”和“清除”两部分。 回收过程是标记出需要所有需要回收的对象,在标记完成后统一回收被标记的对象 不足 1. 标记和清除两个过程效率并不高。 2 ...
分类:
编程语言 时间:
2018-07-14 20:02:54
阅读次数:
175
本文中的垃圾收集器研究背景为:HotSpot+JDK1.7 一、垃圾收集器概述 如上图所示,垃圾回收算法一共有7个,3个属于年轻代、三个属于年老代,G1属于横跨年轻代和年老代的算法。 JVM会从年轻代和年老代各选出一个算法进行组合,连线表示哪些算法可以组合使用 二、各个垃圾收集器说明 1、Seria ...
分类:
其他好文 时间:
2018-07-09 16:34:25
阅读次数:
219
C/C++经典垃圾回收算法 1. 引用计数法: 2. 标记-清除算法 3. 标记-缩并算法 4. 节点拷贝算法 引用计数法能够平滑的进行垃圾回收,而不出现“停止”现象,经常出现于一些实时系统中,但它无法解决环形问题。 后面三种统称为跟踪垃圾回收,在每一次垃圾回收过程中,要遍历或者复制所有存活的对象, ...
分类:
其他好文 时间:
2018-07-06 10:09:16
阅读次数:
163
一.GC收集的工具 1.Servial收集器 特点:历史悠久,单线程收集,复制算法,,stop the world,收集新生代,简单高效,专心收集,没有线程切换开销 用在Client模式下是一个非常好的选择。 2.ParNew收集器 特点:就是serial收集器的多线程版本,可控参数回收算法都与se ...
分类:
其他好文 时间:
2018-06-22 01:03:05
阅读次数:
157
一.垃圾回收的两个方法 1.引用计数算法 对象添加计数器,被引用一次计数器自加1,当引用失效计数器减1,当计数器为0的时候, 对象就是处于可以回收的状态。(也就是不可用的状态) 这个计数算法的好处就是实现简单。坏处就是当有两个对象相互引用,GC收集就会失败。 2.根搜索算法 根搜索算法这个就是 GC ...
分类:
编程语言 时间:
2018-06-19 13:53:37
阅读次数:
199