VisualVM 怎么实现的强制执行GC?

发布于 2021-11-14 15:28:22 字数 39 浏览 956 评论 5

我所了解的在api层面是不能强制gc的,这个玩意儿是怎么做到的?有高人知道么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

悟红尘 2021-11-18 17:43:11

如果DisableExplicitGC没打开,可以调用System.gc()。执行System.gc();后不会立即做FullGC。

1.在VisualVM上可以借用BTrace的插件;

2.可以用jConsole工具调用System.gc();

3.MBean。

路还长,别太狂 2021-11-18 08:38:55

这个怎么说呢,gc执行是随机性的,你不可能人为去强制执行,如果遇到了应该做垃圾回收而没做导致应用无法正常运行,不妨改下jvmGC策略

夜无邪 2021-11-18 04:07:21

GC在JVM里面是一个单独的守护线程,它的优先级非常低,虽然GC的调用是遵从算法的,但连JVM的开发者自己都不清楚GC何时被调用.且没有强制GC方法.

梦里兽 2021-11-16 23:20:48

他也没有强制gc,其实就是执行了一下System.gc()。

参见java.lang.management.MemoryMXBean 这个接口的gc方法的说明。

泛滥成性 2021-11-15 23:56:47

说不能保证马上执行太夸大了,虽然也不算错。API文档上的说法是虚拟机会做些努力来尝试回收,但不保证有结果。

Calling the gc method suggests that the Java Virtual Machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the Java Virtual Machine has made a best effort to reclaim space from all discarded objects.

简单的测试方法,你可以自己写个MBean开放一个gc方法,作用就是直接调用System.gc对比JDK自带的MBean看下效果。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文