一、Java垃圾回收器要负责完成以下3个任务:

1、分配内存

2、确保被引用对象的内存不被错误回收

3、回收不再被引用的对象的内存空间

二、垃圾回收是一个复杂而又耗时的操作。如果JVM花费过多的时间在垃圾回收上,则势必会影响应用的运行性能。一般情况下,垃圾回收器在运行操作的时候,整个应用的执行时被暂时中止的。这是因为垃圾回收器需要重新更新应用中所有对象引用的实际内存地址。

三、垃圾回收方式

不同硬件平台能支持的垃圾回收方式也是不同。比如多cpu的平台上,就可以通过并行的方式进行垃圾回收,而单cpu平台只能串行进行。不同应用期望的垃圾回收方式也不同。服务器端应用可能希望在整个应用的运行时间中,花在垃圾回收上是时间总数越小越好。对于与用户交互的应用来说,则可能希望垃圾回收带来的停顿的时间间隔越小越好。对于这种情况JVM提供了多种垃圾回收的方法以及对应的性能调优参数,应用可以根据需求定制。

目前JVM都采用分代收集,在分代收集的基础上又分为串行收集、并行收集以及并发收集。

1、串行收集器

串行收集器的工作过程用单线程处理所有垃圾回收工作,因为没有多线程交互,所以效率比较高。但是不适合多处理器,一般适合在单击处理器上使用。

2、并行收集器

并行处理器是多线程处理垃圾回收工作,可以减少垃圾回收的时间,一般在多线程多处理器上使用。 并行垃圾回收的线程数和机器的处理器数相等。

此收集器可以进行如下配置:

(1)最大垃圾回收暂停:指定垃圾回收的最长暂停时间。如果指定了此值,则会调整堆大小和垃圾回收相关参数,已达到此值。此值的设置可能会减少应用的吞吐量

(2)吞吐量:吞吐量是垃圾回收的时间与非垃圾回收的时间的比值。

3、并发收集器。

并发收集器可以保证大部分工作都并发进行(应用不暂停),垃圾回收只暂停很少时间。并发收集器主要减少年老代的暂停时间,它在应用不暂停的情况下,使用独立的垃圾回收线程,跟踪可达对象。

Java垃圾回收器的更多相关文章

  1. [译]Java垃圾回收器的类型

    说明:这篇文章来翻译来自于Javapapers 的Types of Java Garbage Collectors 在这部分的教程中我们将讲到可使用的四种不同类型的Java垃圾回收器.垃圾回收是Jav ...

  2. Java垃圾回收器的工作原理

    上课,老师照本宣科,实在难以理解,干脆就看书包里的Java书,正好看了Java的垃圾回收器是如何工作的,觉得有必要记录一下. 参考于 Java编程思想第四版(Thinking in Java) 老年代 ...

  3. Java垃圾回收算法和垃圾回收器

    基本上 jvm内存回收有三种 基本算法 标记-清除 标记清除的算法最简单,主要是标记出来需要回收的对象,然后然后把这些对象在内存的信息清除.如何标记需要回收的对象,在上一篇文章里面已经有说明. 标记- ...

  4. Java GC系列(3):垃圾回收器种类

    本文由 ImportNew - 好好先生 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 在这篇教程中我们将学习几种现有的垃圾回收器.在 ...

  5. 【转】Java学习---垃圾回收算法与 JVM 垃圾回收器综述

    [原文]https://www.toutiao.com/i6593931841462338062/ 垃圾回收算法与 JVM 垃圾回收器综述 我们常说的垃圾回收算法可以分为两部分:对象的查找算法与真正的 ...

  6. Java GC系列(2):Java垃圾回收是如何工作的?

    本文由 ImportNew - 伍翀 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 本教程是为了理解基本的Java垃圾回收以及它是如何 ...

  7. Java垃圾回收介绍(译)

    在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的.与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码.这是使Java流行的众多特征之一,也帮助了程序员写出了更好的 ...

  8. [译]Java 垃圾回收介绍

    说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction 在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的. ...

  9. 浅谈java垃圾回收机制

    今天看thinking in java,里面很详细的谈到java垃圾回收器机制,看完后让我对这神秘的区域有一定的了解,特写一些小总结记录下来. 分两点来说. 第一点:Object.finalize() ...

随机推荐

  1. VS启用IIS调试的方法及可能碰到的问题。

    经常有这种情况, 开发机本地正常, 但是一旦发布到服务上后, 就出现各种问题. 这是由于开发机和服务器环境不一样造成的, 所以开发时要尽可能的模拟真实性.  这时候, VS的这个功能就帮大忙了. 如何 ...

  2. ApplicationContext.xml 的最终xml声明,包括注解 aop

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  3. java动态代理复习

    package com.free.testProxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Met ...

  4. 支持向量机之Hinge Loss 解释

    Hinge Loss 解释 SVM 求解使通过建立二次规划原始问题,引入拉格朗日乘子法,然后转换成对偶的形式去求解,这是一种理论非常充实的解法.这里换一种角度来思考,在机器学习领域,一般的做法是经验风 ...

  5. 【英文】Bingo口语笔记(18) - Cover系列

    cover charge 服务费 cover version 翻唱版本 cover the news 头条新闻

  6. 【转】15 个用于 GitHub 的 Chrome 插件

    原文网址:http://webres.wang/15-useful-chrome-extensions-for-github/ 对于 GitHub 你了解多少呢?其实,它是一个基于 Git 托管的 W ...

  7. 锋利的jQuery读书笔记---jQuery中Ajax--get、post等方法

    load()方法通常用来从Web服务器上获取静态的数据文件,然而这并不能体现ajax的全部价值. 在项目中,如果需要传递一些参数给服务器中的页面,那么可以使用$.get()或者$.post()方法(或 ...

  8. K2 K2Blackpearl安装步骤详解(服务端)

    转:http://www.cnblogs.com/dannyli/archive/2011/11/30/2269485.html 以下是K2 Blackpearl的安装步骤,本人亲测可用哦. 1.安装 ...

  9. hdu 2899(数学基础+二分)

    题意:给了你一个函数,然后给了你x的变化范围,让你求出函数的最小值. 分析:它让你求的是函数的最小值,所以我们可以先对函数求导,得到的导数就可以判断函数的单调性了,求出导数后,我们发现如果函数的导数是 ...

  10. 分享一些Comet开发经验

    前言 本comet技术主要用于数据库持久层的 穿越防火墙 远程访问.只要有一台中继网站,任意地点的数据库都能被访问. Comet概念介绍 WebIM.网页的客服.meebo等大家听说过了.最近还有个兄 ...