如何通知java虚拟机进行垃圾回收?以及垃圾回收机制的原理是什么

[复制链接]
查看11 | 回复3 | 2017-10-11 07:25:38 | 显示全部楼层 |阅读模式
java的垃圾回收会由虚拟机自动进行。因为各版本虚拟机的实现不一样,具体回收时点会有一定的不同,但大体上在对内存不足时,是一定会尝试进行一次回收的。如果回收后,内存还是不够,则会报出经典的OutofMemory异常。用户可以调用System.gc()进行强制的内存回收,但和上面一样,回收完后不一定就保证能有足够的内存。具体原理你可以想象为虚拟机会保存一张森林结构的内存对象表,林中各树的根节点是各个线程,线程中引用的对象,以及这些对象引用的其他对象会按照引用关系依次排列分布到树中。这样当GC进行时,依次扫描所有对象,如果一个对象的父引用指向不到一个处于活动状态的线程,或者所有直接父引用已经标记为可回收,则将这个对象标记为可回收。最后再释放所有标记...
回复

使用道具 举报

千问 | 2017-10-11 07:25:38 | 显示全部楼层
System.gc() 可以建议jvm进行垃圾回收,不过这个可以通过配置禁止掉。一个后台线程在资源不足或一定时间后回收废弃的对象占用的内存。...
回复

使用道具 举报

千问 | 2017-10-11 07:25:38 | 显示全部楼层
System.gc();finlloline();runtime.system.gc();...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行