实战Java虚拟机之四:提升性能,禁用System.gc() ?
来源:互联网 发布:淘宝考试题库txt 编辑:程序博客网 时间:2024/06/05 19:53
今天开始实战Java虚拟机之四:“禁用System.gc()”。
总计有5个系列
- 实战Java虚拟机之一“堆溢出处理”
- 实战Java虚拟机之二“虚拟机的工作模式”
- 实战Java虚拟机之三“G1的新生代GC”
- 实战Java虚拟机之四“禁用System.gc()”
- 实战Java虚拟机之五“开启JIT编译”
默认情况下,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()等价于一个空函数调用。
节选自
《实战java虚拟机》一书Q交流群:397196583
0 1
- 实战Java虚拟机之四:提升性能,禁用System.gc() ?
- 禁用 Python GC,Instagram 性能提升10%
- 实战Java虚拟机之三“G1的新生代GC”
- 实战Java虚拟机之三“G1的新生代GC”
- Java虚拟机之GC
- java虚拟机之gc
- java性能优化开发之--禁用System.out.println
- 如何禁用System.gc()
- Java垃圾回收之System.gc()方法
- Java字符串之性能提升
- 《JAVA虚拟机》读书笔记二之GC
- Java虚拟机深入学习之四: Java虚拟机的性能监控和故障处理工具
- 深入JVM虚拟机(四) Java GC收集器
- [Unity]Unity性能优化实战之GC优化(序)
- [Unity]Unity性能优化实战之GC优化(1)
- Java Socket实战之八 socket提升
- Java Socket实战之八 socket提升
- Java性能优化指南(四):GC收集器导论
- Redis mysql应用
- 【计算机网络系列(一)】由下至上的互联网协议
- 关于LISTBOX绑定数据再刷新的问题
- 【Sublime】Sublime Text 2运行java代码配置
- HTML5标签实战
- 实战Java虚拟机之四:提升性能,禁用System.gc() ?
- 不悔梦归处,只恨太匆匆
- SQL2008中Merge的用法
- 成员访问运算符
- 写给程序员的心理学入门知识(一)
- zynq linux 3.15 ARM Device Tree 的初始化
- AutoCompleteTextView控件的应用-实现记录提示
- 互联网精准广告定向技术
- iOS- 蓝牙集成GameKit,MultipeerConnectivity,CoreBluetooth