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() ...
随机推荐
- [反汇编练习] 160个CrackMe之027
[反汇编练习] 160个CrackMe之027. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
- VS启用IIS调试的方法及可能碰到的问题。
经常有这种情况, 开发机本地正常, 但是一旦发布到服务上后, 就出现各种问题. 这是由于开发机和服务器环境不一样造成的, 所以开发时要尽可能的模拟真实性. 这时候, VS的这个功能就帮大忙了. 如何 ...
- HDU 4606 Occupy Cities ★(线段相交+二分+Floyd+最小路径覆盖)
题意 有n个城市,m个边界线,p名士兵.现在士兵要按一定顺序攻占城市,但从一个城市到另一个城市的过程中不能穿过边界线.士兵有一个容量为K的背包装粮食,士兵到达一个城市可以选择攻占城市或者只是路过,如果 ...
- RNN 与 LSTM 的应用
之前已经介绍过关于 Recurrent Neural Nnetwork 与 Long Short-Trem Memory 的网络结构与参数求解算法( 递归神经网络(Recurrent Neural N ...
- Hibernate-Native SQL
1.标量(值)查询: sess.createSQLQuery("SELECT * FROM CATS").list(); sess.createSQLQuery("SEL ...
- Heritrix源码分析(三) 修改配置文件order.xml加快你的抓取速度(转)
本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/629891 本博客已迁移到本人独立博客: http://www.yun5u ...
- Windows下PHP+Eclipse开发环境搭建 及错误解决(apache2.2服务无法启动 发生服务特定错误:1)
前言 Eclipse与php/apache的关系:Eclipse只是用来写代码的,如果想要在浏览器查看运行效果就要让php/apache的运行目录指向你的代码目录.Eclipse貌似不会自己和apac ...
- HTTP协议学习笔记-1
基本概念 首先需要了解几个概念: WEB客户端和服务器: WEB客户端当然就是指我们用使用的某个网站 服务器就是WEB资源源头,我们从服务器去请求数据,服务器把请求的数据发给WEB客户端 媒体类型: ...
- shell 中awk、if while 例子
1.if while命令写在一行中while read a b;do echo $a $b;done < aa.txt12 13 14cat aa.txt12 13 14if [[ $i -eq ...
- JQuery中的事件以及动画
.bind事件 <script src="script/jquery-1.7.1.min.js"></script> <script> $(fu ...