A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 安阳 中级黑马   /  2013-8-15 23:47  /  1437 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 安阳 于 2013-8-26 22:00 编辑

关于堆内存,自己多想了一点,与大家讨论下。堆内存使用完毕后,会有一个垃圾回收机制来回收。但是,这个回收的时间是随机不定的。所以我想,是否可以在堆内存使用完毕,到垃圾回收机制回收前的这段时间里做点什么。不知大家有没有同样的想法,I'm new player,多多指教!

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
为什么会随机而定了,其实也有原因的,之所以说是随机,到不如说当堆内存中的垃圾比较少时,如果垃圾回收器来收回的话,自己还得占内存,占CPU资源,这样一样即使回收了,所消耗的资源也不亚于不回收的,会不回收,底层有机制来判断,就像是我们将垃圾丢进垃圾筒的话,如果垃圾筒就一个瓶子,那么就排人来回收,所消耗的资源会更大,如果每当垃圾桶差不多满了的时候就回收,那么效率会大大提高
回复 使用道具 举报
java与其它语言不同的地方就包括,其它语言有的可以由程序员直接来操作内存,包括内存空间的分配和释放等,而由程序员来实现有时可能导致内存混乱,不该释放的释放了,这样程序就容易发生各种问题。而在java中,内存的操作都是由jvm来操作的,这样就可以让程序员不必直接面对内存操作从而在程序中避免了各种内存的错误,gc操作是一个线程,我们可以通知程序运行垃圾回收,但回不回收并不由我们程序员说的算,它由jvm自己决定何时回收,这是因为我们编的程序中的线程都比gc线程优先级高,当我们通知它回收时,恰好有一个其它的线程也在运行,cpu会先执行其它程序 。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马