社区
Java SE
帖子详情
java的垃圾回收机制是完全不可控的,但调用System.gc()后不就会清理内存了吗
tpos
2010-06-09 01:58:22
这两件事不矛盾吗?调用System.gc()后java垃圾回收器不就是可控的了吗?
...全文
485
13
打赏
收藏
java的垃圾回收机制是完全不可控的,但调用System.gc()后不就会清理内存了吗
这两件事不矛盾吗?调用System.gc()后java垃圾回收器不就是可控的了吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cainiaoxuexi
2010-06-25
打赏
举报
回复
这个System.gc()函数的作用只是提醒虚拟机,但是它不能保证垃圾回收一定会进行,而且具体什么时候进行是取决于具体的虚拟机的,不同的虚拟机(对应的os不同等)有不同的对策。
fantasy471503202
2010-06-24
打赏
举报
回复
恩,对虚拟机垃圾回收的时间问题也是颇有疑问。
ronniegxq
2010-06-24
打赏
举报
回复
调用gc的时候不一定回收,不调用gc的时候不一定不回收
xiangchang224
2010-06-24
打赏
举报
回复
调用gc的时候不一定回收,不调用gc的时候不一定不回收。
你可以看看http://www.javaeye.com/topic/695362
space_Wind
2010-06-10
打赏
举报
回复
有句话是这样的,调用gc的时候不一定回收,不调用gc的时候不一定不回收。
西北地的风
2010-06-10
打赏
举报
回复
System.gc()只是在回收的时候会进行此清理动作,回收的时机不由gc()决定,而由JVM的算法决定
ZangXT
2010-06-09
打赏
举报
回复
System.gc()可以屏蔽掉的。
龙四
2010-06-09
打赏
举报
回复
System.gc()是提醒作用!
就好比你妈妈叫你该写作业,这是提醒,至于你写不写,你妈妈不会管你的
wuyaowen2000
2010-06-09
打赏
举报
回复
System.gc()只是建议回收,实际回收与否看运气了
rmouse_2005
2010-06-09
打赏
举报
回复
System.gc()只是通知要垃圾回收了,但是并没有即刻进行垃圾回收
focusforce
2010-06-09
打赏
举报
回复
《深入JVM》里不知道是否有详实描述。
看看API关于System.gc()的说明:运行垃圾回收器。
调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。
设置比较合理的xms和xmx,避免内存泄露,才是控制内存的好办法。
%java_home%\demo\management\ 下面的demo可以看看,展示了对内存的一些管理活动。
「已注销」
2010-06-09
打赏
举报
回复
调用 System.gc 也仅仅是通知而已
要等虚拟机觉得需要执行时才执行
wutian4567268
2010-06-09
打赏
举报
回复
调用System.gc()后也不是立即执行回收,有可能不回收
浅谈
Java
的System.
gc
()实现
我们都知道System.
gc
()用于
调用
垃圾收集器。很久之前我一直认为执行System.
gc
()之后,虚拟机
会
立刻垃圾回收。 抱歉,我理解错了。 直到看完System.
gc
()的源码之后才搞清楚,执行System.
gc
()函数的作用只是提醒或告诉虚拟机,希望进行一次垃圾回收。 至于什么时候进行回收还是取决于虚拟机,而且也不能保证一定进行回收(如果-XX:+DisableExplicit
GC
设...
java
对于
垃圾回收机制
[
GC
垃圾回收机制
] 为什么有
GC
还
会
有
内存
溢出呢?
java
垃圾回收机制
来源于书本和工作中的总结。
内存
泄露 如果分配出去的
内存
得不到释放,及时回收,就
会
引起系统运行速度下降,甚至导致程序瘫痪,这就是
内存
泄露
GC
机制
java
内存
分配和回收 都是jre后台进行, 简称
GC
机制, JRE在回收时做了什么 jre
会
提供一个后台线程 进行检测和控制, 使用垃圾回收算法进行(1)发现无用信息对象;(2)回收被无用对象占用的
内存
空间,使该
Java
中 System.
gc
()
调用
垃圾收集器与 finalize() 函数
Java
垃圾回收器的注意事项: "对象可以不被垃圾回收" :
java
的垃圾回收遵循一个特点, 就是能不回收就不
会
回收.只要程序的
内存
没有达到即将用完的地步, 对象占用的空间就不
会
被释放.因为如果程序正常结束了,而且垃圾回收器没有释放申请的
内存
, 那么随着程序的正常退出, 申请的
内存
会
自动交还给操作系统; 而且垃圾回收本身就需要付出代价, 是有一定开销的, 如果不使用,就不
会
存在这一部分的开销....
Java
的垃圾强制回收
一点睛 当一个对象失去引用后,系统何时
调用
它的finalize()方法对它进行资源
清理
,何时它可以变成不可达状态,系统何时回收它占有的
内存
,对于程序
完全
透明。程序只能控制一个对象不再被任何引用变量引用,不能控制它何时被回收。 程序可以强制系统进行垃圾回收——这种强制只是通知系统进行垃圾回收,但系统是否进行垃圾回收依然不能确定。大部分时候,程序强制垃圾回收后总是有一些效果 强制系统垃圾回收有...
浅谈垃圾回收(System.
gc
()和Runtime.getRuntime.
gc
())
关于
Java
中的垃圾回收,明白该方法的使用和运行机制
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章