1 、垃圾回收机制(GC)
垃圾回收就是回收内存中不再使用对象;
(1)垃圾回收的步骤:
1)查找内存中不再使用的对象;
2)释放这些对象所占用的内存;
(2)查找内存中不再使用的对象方法:
1)引用计数法
如果一个对象没有被任何引用指向,则可视为垃圾;
缺点:不能检测到环的存在;
2)根搜索算法:
根搜索算法就是通过一系列名为“GC Roots”的对象作为起始点,
从这些节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象
到GC Roots没有任何引用链相连时,则认为该对象未被引用。
(3)放这些对象占用的内存

总得来说就产生了三种类型的回收算法:
1)标记-复制
它将可用内存容量划分为大小相等的两块,每次只使用其中的一块。当这一块用完之后,
就将还存活的对象复制到另外一块上面,然后在把已使用过的内存空间一次理掉。
它的优点是实现简单,效率高,不会存在内存碎片。缺点就是需要2倍的内存来管理。
2)标记-清理
标记清除算法分为“标记”和“清除”两个阶段:首先标记出需要回收的对象,
标记完成之后统一清除对象。它的优点是效率高,缺点是容易产生内存碎片。
3)标记-整理
标记操作和“标记-清理”算法一致,后续操作不只是直接清理对象,
而是在清理无用对象完成后让所有 存活的对象都向一端移动,并更新引用其对象的指针。
因为要移动对象,所以它的效率要比“标记-清理”效率低,但是不会产生内存碎片。
4)基于分代的假设
由于对象的存活时间有长有短,所以对于存活时间长的对象,
减少被gc的次数可以避免不必要的开销。这样我们就把内存分成新生代和老年代,
新生代存放刚创建的和存活时间比较短的对象,老年代存放存活时间比较长的对象。
这样每次仅仅清理年轻代,老年代仅在必要时时再做清理可以极大的提高GC效率,
节省GC时间。

java垃圾回收机制的更多相关文章

  1. 【转载】Java垃圾回收机制

    原文地址:http://www.importnew.com/19085.html Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联 ...

  2. 【转】深入理解 Java 垃圾回收机制

    深入理解 Java 垃圾回收机制   一.垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再 ...

  3. 深入理解java垃圾回收机制

    深入理解java垃圾回收机制---- 一.垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再 ...

  4. Java垃圾回收机制_(转载)

    Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给 ...

  5. 成为Java GC专家(3)—如何优化Java垃圾回收机制

    为什么需要优化GC 或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并不总是需要进行GC优化,但前提是所运行的基于Java的系统,包含了如下参数或 ...

  6. java 垃圾回收机制 引用类型

    Java语言的一个重要特性是引入了自动的内存管理机制,使得开发人员不用自己来管理应用中的内存.C/C++开发人员需要通过malloc/free 和new/delete等函数来显式的分配和释放内存.这对 ...

  7. 【Java】Java垃圾回收机制

    Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给 ...

  8. Java垃圾回收机制的工作原理

    Java垃圾回收机制的工作原理 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 获取更多内容,请关注小编个人微信公众平台: 一.Java中引入垃圾回收机制的作用 ...

  9. Java 垃圾回收机制(早期版本)

    Java 垃圾回收机制在我们普通理解来看,应该视为一种低优先级的后台进程来实现的,其实早期版本的Java虚拟机并非以这种方式实现的. 先从一种很简单的垃圾回收方式开始. 引用计数 引用计数是一种简单但 ...

  10. 深入理解 Java 垃圾回收机制

            深入理解 Java 垃圾回收机制 一:垃圾回收机制的意义 java  语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员 ...

随机推荐

  1. java 方法

    方法命名规范要求 类的命名规范:“全部单词的 首字母必须大写”.那么在定义方法的时候也是有命名规范要求的:“第 一个单词的首字母小写,之后每个单词的首字母大写”,那么这就是方法 的命名规范. 递归调用 ...

  2. SHELL编写NGINX服务控制脚本

    使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的 ...

  3. Linux下查看chm文件

    第一种方法.安装xchm,安装命令sudo apt-get install xchm,打开xchm,在终端下输入xchm. 第二种方法.安装kchmviewer,安装命令sudo apt-get in ...

  4. Python学习笔记(2) Python提取《釜山行》人物关系

    参考:http://www.jianshu.com/p/3bd06f8816d7 项目原理:   实验基于简单共现关系,编写 Python 代码从纯文本中提取出人物关系网络,并用Gephi 将生成的网 ...

  5. ijkplayer导入AS时,出现more than one library with package name错误

    最近刚接触ijkplayer ,在ubuntu 中将ijkplayer编译后,导入Windows中AS时,出现以下错误,目前初步定为为包重名,但具体原因未定为到,麻烦有遇到这方面的朋友,给指导下,

  6. python包使用指南-创建虚拟环境

    创建虚拟环境的两种方法: 1.virtualenv 2.venv http://packaging.python.org/en/latest/installing/#creating-virtual- ...

  7. Demo 版

    Demo1   美食网站 Demo2   12301智慧旅游公共服务平台 Demo3   react_and_koa example

  8. JS提交对象数组到服务端的方法总结(C#实例)

    *转载请注明出处: 作者:willingtolove: 本文链接:http://www.cnblogs.com/willingtolove/p/4741549.html 正文: 1. 方法一:利用aj ...

  9. python --> 正则表达式

    在python中使用正则表达式,需要导入 re 模块 一. 元字符,包括 []  {} | ? * +  .  ^ $ \  () . 号:通配符,一个点号就代表一个字符,一般情况下不能通配换行符 \ ...

  10. 弹框控件 UIAlertView UIActionSheet

    // 创建弹框 从底部弹出,一般用于危险操作 UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"恭喜通关" ...