java内存的管理其实就是对象内存的管理,其中包括对象的分配和释放

对应程序员来说分配对象使用new关键字,而释放一个对象只需要让它等于null,让程序不能再访问这个对象,这时对象是不可达的,GC负责回收不可达的对象。

当程序员创建一个对象时,GC就开始监控对象的大小、地址、使用情况。程序一般通过有向图的方式管理堆中的所有对象,通过这种方式确定哪些对象是可达的,哪些对象是不可达的。

由于在程序GC时程序会停止运行,用户可以感知,所以当GC运行时间过长的时候用户感知到程序停止运行,但是当GC运行时间过短,内存回收率会变低,表示大量内存没有被回收,程序仍然占用着大量内存,所以在设计GC的时候必须在停顿时间和回收率上做一个权衡。

1、增量式GC

通过一定的算法把一个长的中断划分为多个小的中断,减少GC对用户程序的影响;将堆中的所有对象按照创建和使用进行分组,将使用频率较高和相关的对象分在一组,随着程序的运行不断对分组进行调整,当GC运行时它总是回收最近最少访问的对象,如果整组都为可回收对象,那么整组回收

最新文章

  1. composer 代码库管理
  2. Atitit.去除水印的方案
  3. Java虚拟机的功能
  4. PL/SQL编程基础
  5. 【poj3208-Apocalypse Someday】数位DP
  6. HDU 5703 Desert (找规律)
  7. P55、面试题6:重建二叉树
  8. C#中通过调用Dll函数时,执行一段时间后,就会报内存可能被破坏的错的解决办法
  9. noip 2012 开车旅行
  10. [转]C++堆和栈的区别
  11. Nvidia显卡怎样查看显存大小及硬件相关信息
  12. Sql Server之数据库规范——1、自动化规范命名
  13. 记JavaScript的入门学习(二)
  14. 【面向对象设计原则】之接口隔离原则(ISP)
  15. springboot情操陶冶-初识springboot
  16. 快速掌握JavaScript面试基础知识(二)
  17. JaxbUtil转json转XML工具类
  18. 使用getCurrentPosition方法实时获取当前Geolocation信息(附源码文件)--html5、JavaScript
  19. day6-if,while,for的快速掌握
  20. (转)explain、db2exfmt 命令的使用:文本输出执行计划

热门文章

  1. eclipse搭建servlet项目
  2. Launching the Debugger Automatically
  3. 控制面板中java设置项如何删除
  4. 自适应滤波原理及simulink
  5. Easyui扩展icon下载
  6. 排球比赛计分规则(P205页)
  7. 【转】以 java 为例,总结下 appium 里的一方法的使用心得
  8. jquery+ajax跨域请求webservice
  9. C#的循环语句
  10. MIPS指令集相关