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. eclipse运行没问题,tomcat以脚本启动后插入数据库的中文会乱码

    记一次部署工程的时候遇到的问题 部署war包到win7的时候发现,布上去后插入数据库的中文会乱码,然后发现用eclipse运行源码没问题,一开始以为是war打出来的时候编码错误,然后将eclipse的 ...

  2. css3学习--border

    http://blog.sina.com.cn/s/blog_61671b520101gelr.html border-radius border-radius: 50px 20px;上下都是50px ...

  3. 利用django创建一个投票网站(二)

    创建你的第一个 Django 项目, 第二部分 这一篇从第一部分(zh)结尾的地方继续讲起.本节我们将继续写 Web 投票应用,并主要关注 Django 提供的自动生成的管理页面(admin site ...

  4. UVA1586

    #include<stdio.h> #include<string.h> #include<ctype.h> int main(){ int n; ]; int n ...

  5. matlab 曲线拟合

    曲线拟合(转载:http://blog.sina.com.cn/s/blog_8e1548b80101c9iu.html) 补:拟合多项式输出为str 1.poly2str([p],'x') 2. f ...

  6. CSS3 border-image 属性

    border-image 属性是一个简写属性,用于设置以下属性: border-image-source 用在边框的图片的路径,默认值none. 如:border-image-source:url(b ...

  7. Spring--开山篇

    ·Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spring是一个分层的JavaSE/EEfull-stack( ...

  8. 【ASP.NET程序员福利】打造一款人见人爱的ORM(一)

          “很多人都不太认可以第三方ORM,因为考虑的点不够全面,没有大用户群体的ORM有保证,这点是不可否认确是事实.但是往往用户群体大的ORM又有不足之处,今天我们就来聊聊关于ORM的话题,打造 ...

  9. Nginx配置文件

    https://www.digitalocean.com/community/tutorials/understanding-the-nginx-configuration-file-structur ...

  10. CMake

    使用CMake编译跨平台静态库 http://www.tuicool.com/articles/3uu2Yj cmake命令 安装.用法简介 https://fukun.org/archives/04 ...