黑马程序员技术交流社区

标题: 堆内存使用问题 [打印本页]

作者: 安阳    时间: 2013-8-15 23:47
标题: 堆内存使用问题
本帖最后由 安阳 于 2013-8-26 22:00 编辑

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


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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2