博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java GC 原理
阅读量:7130 次
发布时间:2019-06-28

本文共 421 字,大约阅读时间需要 1 分钟。

 内存的分配和释放,典型的做法有

1.全人工,也就是调用malloc/free,new/delete这些完全靠程序员,当然这样开发的程序很容易出现bug

2.引用计数,对每个分配的对象增加一个引用计数器,这样带来的问题是内存额外开销,增加减少引用时的计算开销,特别在多线程时的加锁,而且还有循环引用的问题。

3.标记清除,也就是Java GC采用的方式,通过判断有向图中每个节点是否能与根节点相通来对对象进行标记回收。这种方式通过一个独立的GC线程来判断对象在有向图中与根节点的可达状态,然后再进行清除。

Java GC的时机是由系统算法自身决定,或者说不可准确预测,即使是调用了System.gc().被释放的对象会根据大小,生成时间,程序内存使用情况等,触发不同的GC条件,进而用不同的GC方式(minor gc / full gc)释放。

转载于:https://www.cnblogs.com/goooon/p/5658975.html

你可能感兴趣的文章
superset连接数据库,以及汉化
查看>>
web作用域(4个)
查看>>
JAVA SSH 项目的首页数据应该怎么显示
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
金山快盘开发(六)
查看>>
迅为三星Exynos嵌入式开发平台超强GPS模块
查看>>
C链表1-产生
查看>>
2014-07-04--vim相关知识
查看>>
sync logins from ASE 12.5.4 to ASE 15.5
查看>>
一个类似fork×××的效果
查看>>
Animation 动画的相关运用
查看>>
开源IDE LightTable的使用
查看>>
Hyper-V在线扩展磁盘空间总结
查看>>
Microsoft File Transfer Manager
查看>>
Hyper-V 3.0 - 存储迁移(简单)
查看>>
CentOS 7 Docker方式安装 PHP,Mysql,phpmyadmin 过程记录
查看>>
项目质量管理重点
查看>>
红冒系列-Systemctl命令详解说明
查看>>
Exchange2010开启outlook anywhere
查看>>