如何禁用System.gc()
2017-04-11 18:33
204 查看
默认情况下,System.gc()会显式直接触发Full GC,同时对老年代和新生代进行回收。而一般情况下我们认为,垃圾回收应该是自动进行的,无需手工触发。如果过于频繁地触发垃圾回收对系统性能是没有好处的。因此虚拟机提供了一个参数DisableExplicitGC来控制是否手工触发GC。
System.gc()的实现如下所示:
Runtime.getRuntime().gc();
Runtime.gc()是一个native方法,最终实现在jvm.cpp中,如下所示:
JVM_ENTRY_NO_ENV(void, JVM_GC(void))
JVMWrapper(“JVM_GC”);
if (!DisableExplicitGC)
{
Universe::heap()->collect(GCCause::_java_lang_system_gc);
}
JVM_END
可以看到,如果设置了-XX:-+DisableExplicitGC,条件判断就无法成立,那么就会禁用显式GC,使得System.gc()等价于一个空函数调用。
System.gc()的实现如下所示:
Runtime.getRuntime().gc();
Runtime.gc()是一个native方法,最终实现在jvm.cpp中,如下所示:
JVM_ENTRY_NO_ENV(void, JVM_GC(void))
JVMWrapper(“JVM_GC”);
if (!DisableExplicitGC)
{
Universe::heap()->collect(GCCause::_java_lang_system_gc);
}
JVM_END
可以看到,如果设置了-XX:-+DisableExplicitGC,条件判断就无法成立,那么就会禁用显式GC,使得System.gc()等价于一个空函数调用。
相关文章推荐
- 如何安装Scripting.FileSystemObject组件和三种禁用FileSystemObject组件的方法
- 如何让System.gc()更快的工作
- 如何让System.gc()更快的工作
- Flex 如何调用System.gc 回收内存
- 如何让System.gc()更快的工作
- 实战Java虚拟机之四:提升性能,禁用System.gc() ?
- 如何让System.gc()更快的工作
- 实战Java虚拟机之四:提升性能,禁用System.gc() ?
- 请教如何禁用网卡,Win2K/Win98
- 使用FileSystemWatcher监测大文件时,如何判断文件已经创建完成?
- 如何让Win2000和XP SP1支持System.EnterpriseServices(XP已验证)
- 什么时候在游戏中调用System.gc()?[javaME]
- 调用system函数时,如何隐藏其dos窗口
- j2me中使用System.gc()
- [转]三种禁用FileSystemObject组件的方法
- 如何在命令行模式下禁用或启用网卡
- 在VC++.net中将System::String __gc* 转换为本机的char *或wchar_t *的三种方法
- 如何再Windows中禁用USB存储设备
- 调用system函数时,如何隐藏其dos窗口
- 学习如何在 Java 代码中启用和禁用断言