文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 一、对象的标记 1、什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的清理。 至于怎么标记,一般有两种方法:引用计数和可达性分析。 引用计数实现起来比较简单,就是给对象添 ...
分类:
编程语言 时间:
2019-12-24 23:49:15
阅读次数:
166
常见的垃圾收集器 参考这篇文章:https://crowhawk.github.io/2017/08/15/jvm_3/ 如何判断某个对象为垃圾 引用计数法 目前主流的java虚拟机都摒弃掉了这种算法,最主要的原因是它很难解决对象 之间相互循环引用的问题。尽管该算法执行效率很高。 例如:在testG ...
分类:
编程语言 时间:
2019-12-23 22:19:18
阅读次数:
73
语言特性 显著特点 1. 一次编译,到处运行,通过 java 虚拟机获取跨平台性 2. 垃圾回收,通过垃圾收集器回收内存 解释和编译 1. 一般情况下,java 源文件经过编译后,得到 .class 字节码文件,再被 jvm 解释器解释执行 2. JIT,just in time compile,即 ...
分类:
编程语言 时间:
2019-12-23 13:26:47
阅读次数:
87
垃圾收集分两大块内容: 新生代垃圾收集、老年代垃圾收集 两者各有特性,在新生代内存中,大部分对象朝生夕死,GC的垃圾回收算法大多为复制算法 老年代内存中对象的存活率较高,古选择标记-整理、标记-清除算法较多 新生代收集器有三款: Serial收集器、ParNew收集器、Parallel Scaven ...
分类:
其他好文 时间:
2019-12-18 14:47:21
阅读次数:
88
CMS(Concurrent Mark Sweep)收集器是一种以获取 最短回收停顿时间 为目标的收集器。采用的是"标记-清除算法",整个过程分为4步 由于整个过程中,并发标记和并发清除,收集器线程可以与用户线程一起工作,所以总体上来说,CMS收集器的内存回收过程是与用户线程一起并发地执行的。集器 ...
分类:
其他好文 时间:
2019-12-18 14:26:30
阅读次数:
76
一、内存分配 1.JVM体系结构 2.运行时数据区域 3.内存分配二、内存回收 1.垃圾收集算法 2.垃圾收集器三、相关参考一、内存分配JVM体系结构 在了解自动内存管理的内存分配之前,我们先看下JVM的体系结构。代码编译的结果是从本地机器码转变为字节码,经过类加载器加载到虚拟机后才能执行程序。JV ...
分类:
编程语言 时间:
2019-12-18 13:12:18
阅读次数:
89
那些内存需要回收 内存回收是对运行时内存区域的内存回收,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区 ...
分类:
其他好文 时间:
2019-12-10 16:47:34
阅读次数:
93
垃圾收集器与内存分配策略 1、对象已死吗 1)、引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的 主流的Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难 ...
分类:
其他好文 时间:
2019-12-09 12:15:21
阅读次数:
71
一、设置垃圾收集器的参数 -XX:+UseSerialGC,虚拟机在Client模式下的默认值,Serial+Serial Old -XX:+UseParNewGC,ParNew+Serial Old,在JDK1.8中已经不推荐使用并且将被移除(Java HotSpot(TM) Client VM ...
分类:
其他好文 时间:
2019-12-07 20:54:54
阅读次数:
135