java system.gc() 有用吗,java – 为什么是坏习惯调用System.gc()?

每个人都说避免System.gc()的原因是,它是一个相当不错的指标,根本上破碎的代码。任何依赖于它的正确性的代码肯定是破碎的;任何依赖它的性能很可能被打破。

你不知道你在运行什么样的垃圾回收器。当然有一些不会像你所说的那样“停止世界”,但是有些JVM不是那么聪明,或者出于各种原因(也许他们在电话上?)不要这样做。你不知道它会做什么。

此外,它不能保证做任何事情。 JVM可能完全忽略您的请求。

“你不知道它会做什么,”“你不知道它会甚至帮助,”和“你不应该需要调用它”反过来的组合是为什么人们是如此有力地说,一般你不应该叫它。我认为这是一个“如果你需要问是否应该使用这种情况,你不应该”

编辑从另一个线程解决几个关注:

在阅读你链接的线程之后,还有一些我想指出的事情。

首先,有人建议调用gc()可能会向系统返回内存。这当然不一定是真的 – Java堆本身独立于Java分配增长。

和之前一样,JVM将保存内存(数十兆字节),并根据需要增加堆。它不一定会将内存返回到系统,即使您释放Java对象;它完全自由地保持分配的内存用于未来的Java分配。

要显示可能System.gc()什么也不做,查看:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值