社区
Java SE
帖子详情
java的垃圾回收机制是完全不可控的,但调用System.gc()后不就会清理内存了吗
tpos
2010-06-09 01:58:22
这两件事不矛盾吗?调用System.gc()后java垃圾回收器不就是可控的了吗?
...全文
503
13
打赏
收藏
java的垃圾回收机制是完全不可控的,但调用System.gc()后不就会清理内存了吗
这两件事不矛盾吗?调用System.gc()后java垃圾回收器不就是可控的了吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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()后也不是立即执行回收,有可能不回收
调用
System.
gc
() 的弊端及修复方式
摘要:手动
调用
System.
gc
()存在诸多弊端,包括不
可控
的执行时机、严重的性能问题(如Stop-The-World停顿)、干扰JVM自优化机制以及不同JVM的行为差异。最佳实践是
完全
避免显式
调用
,改用JVM参数禁用或轻量级建议回收。应通过优化
内存
设计、使用弱引用、分治大对象等改善
内存
管理,并配合
GC
日志分析和参数调优。仅在极少数测试或堆外
内存
管理场景可能需手动
GC
。核心原则是信任JVM的自动
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()方法对它进行资源
清理
,何时它可以变成不可达状态,系统何时回收它占有的
内存
,对于程序
完全
透明。程序只能控制一个对象不再被任何引用变量引用,不能控制它何时被回收。 程序可以强制系统进行垃圾回收——这种强制只是通知系统进行垃圾回收,但系统是否进行垃圾回收依然不能确定。大部分时候,程序强制垃圾回收后总是有一些效果 强制系统垃圾回收有...
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章