Java垃圾回收器
一、Java垃圾回收器要负责完成以下3个任务:
1、分配内存
2、确保被引用对象的内存不被错误回收
3、回收不再被引用的对象的内存空间
二、垃圾回收是一个复杂而又耗时的操作。如果JVM花费过多的时间在垃圾回收上,则势必会影响应用的运行性能。一般情况下,垃圾回收器在运行操作的时候,整个应用的执行时被暂时中止的。这是因为垃圾回收器需要重新更新应用中所有对象引用的实际内存地址。
三、垃圾回收方式
不同硬件平台能支持的垃圾回收方式也是不同。比如多cpu的平台上,就可以通过并行的方式进行垃圾回收,而单cpu平台只能串行进行。不同应用期望的垃圾回收方式也不同。服务器端应用可能希望在整个应用的运行时间中,花在垃圾回收上是时间总数越小越好。对于与用户交互的应用来说,则可能希望垃圾回收带来的停顿的时间间隔越小越好。对于这种情况JVM提供了多种垃圾回收的方法以及对应的性能调优参数,应用可以根据需求定制。
目前JVM都采用分代收集,在分代收集的基础上又分为串行收集、并行收集以及并发收集。
1、串行收集器
串行收集器的工作过程用单线程处理所有垃圾回收工作,因为没有多线程交互,所以效率比较高。但是不适合多处理器,一般适合在单击处理器上使用。
2、并行收集器
并行处理器是多线程处理垃圾回收工作,可以减少垃圾回收的时间,一般在多线程多处理器上使用。 并行垃圾回收的线程数和机器的处理器数相等。
此收集器可以进行如下配置:
(1)最大垃圾回收暂停:指定垃圾回收的最长暂停时间。如果指定了此值,则会调整堆大小和垃圾回收相关参数,已达到此值。此值的设置可能会减少应用的吞吐量
(2)吞吐量:吞吐量是垃圾回收的时间与非垃圾回收的时间的比值。
3、并发收集器。
并发收集器可以保证大部分工作都并发进行(应用不暂停),垃圾回收只暂停很少时间。并发收集器主要减少年老代的暂停时间,它在应用不暂停的情况下,使用独立的垃圾回收线程,跟踪可达对象。
Java垃圾回收器的更多相关文章
- [译]Java垃圾回收器的类型
说明:这篇文章来翻译来自于Javapapers 的Types of Java Garbage Collectors 在这部分的教程中我们将讲到可使用的四种不同类型的Java垃圾回收器.垃圾回收是Jav ...
- Java垃圾回收器的工作原理
上课,老师照本宣科,实在难以理解,干脆就看书包里的Java书,正好看了Java的垃圾回收器是如何工作的,觉得有必要记录一下. 参考于 Java编程思想第四版(Thinking in Java) 老年代 ...
- Java垃圾回收算法和垃圾回收器
基本上 jvm内存回收有三种 基本算法 标记-清除 标记清除的算法最简单,主要是标记出来需要回收的对象,然后然后把这些对象在内存的信息清除.如何标记需要回收的对象,在上一篇文章里面已经有说明. 标记- ...
- Java GC系列(3):垃圾回收器种类
本文由 ImportNew - 好好先生 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 在这篇教程中我们将学习几种现有的垃圾回收器.在 ...
- 【转】Java学习---垃圾回收算法与 JVM 垃圾回收器综述
[原文]https://www.toutiao.com/i6593931841462338062/ 垃圾回收算法与 JVM 垃圾回收器综述 我们常说的垃圾回收算法可以分为两部分:对象的查找算法与真正的 ...
- Java GC系列(2):Java垃圾回收是如何工作的?
本文由 ImportNew - 伍翀 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 本教程是为了理解基本的Java垃圾回收以及它是如何 ...
- Java垃圾回收介绍(译)
在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的.与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码.这是使Java流行的众多特征之一,也帮助了程序员写出了更好的 ...
- [译]Java 垃圾回收介绍
说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction 在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的. ...
- 浅谈java垃圾回收机制
今天看thinking in java,里面很详细的谈到java垃圾回收器机制,看完后让我对这神秘的区域有一定的了解,特写一些小总结记录下来. 分两点来说. 第一点:Object.finalize() ...
随机推荐
- JavaScript中Element与Node的区别,children与childNodes的区别
关于Element跟Node的区别,cilldren跟childNodes的区别很多朋友弄不清楚,本文试图让大家明白这几个概念之间的区别. Node(节点)是DOM层次结构中的任何类型的对象的通用名称 ...
- (七)7.2 应用机器学习方法的技巧,准确率,召回率与 F值
建立模型 当使用机器学习的方法来解决问题时,比如垃圾邮件分类等,一般的步骤是这样的: 1)从一个简单的算法入手这样可以很快的实现这个算法,并且可以在交叉验证集上进行测试: 2)画学习曲线以决定是否更多 ...
- reverse(), extend(), sort() methods of list
>>> l = list('sdf') >>> l ['s', 'd', 'f'] >>> id(l) 4520422000 >>&g ...
- SQL利用Case When Then多条件判断
CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 WHEN 条件3 THEN 结果3 WHEN 条件4 THEN 结果4 ....... ...
- 【转】Core Bluetooth框架之一:Central与Peripheral
原文网址:http://southpeak.github.io/blog/2014/07/29/core-bluetoothkuang-jia-zhi-%5B%3F%5D-:centralyu-per ...
- 锋利的jQuery读书笔记---jQuery中Ajax--get、post等方法
load()方法通常用来从Web服务器上获取静态的数据文件,然而这并不能体现ajax的全部价值. 在项目中,如果需要传递一些参数给服务器中的页面,那么可以使用$.get()或者$.post()方法(或 ...
- 用vs2012的命令利用xsd文件生成对应的C#类,把xml的string类型映射到生成的类
输入命令: xsd d:\TDDOWNLOAD\atom-author-link.xsd /c /language:C# /outputdir:d:\ 含义: 将d:\TDDOWNLOAD\atom- ...
- 常用的Oracle数据库语句 (待更新完毕)
一.常用的查询语句 1.1 常用查询 查表中有多少个字段 select count(*) from user_tab_columns where table_name=upper('表名') 或者 s ...
- dos攻击
概念理解 DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--DiskOperationSystem?不,此DoS非彼DOS也,DoS即DenialOfService,拒绝服务 ...
- openGl从零开始之添加颜色
OpenGL 支持两种颜色模式:一种是 RGBA模式,一种是 颜色索引模式.无论哪种颜色模式,计算机都必须为每一个像素保存一些数据,即通过每一个像素的颜色,来改变整体图形的颜色.不同的是, RGBA ...