System.gc()介绍
2024-09-03 00:37:27
System.gc()用于垃圾收集器,调用垃圾收集器将回收未使用的
System.gc()进行回收的准则:
回收没有被任何可达变量指向的对象
JDK实现
public static void gc() {
Runtime.getRuntime().gc();
}
调用了Runtime类的gc方法
public native void gc();
Runtime类的gc方法是个native方法,只能进入JVM代码去看其真正的实现
JVM实现
JNIEXPORT void JNICALL
Java_java_lang_Runtime_gc(JNIEnv *env, jobject this)
{
JVM_GC();
}
直接调用了JVM_GC()方法,在jvm.cpp中实现的
以此找下去,会发现,System.gc()会触发Full GC
Full GC 耗时比较长,对应用影响较大,一般不推荐使用System.gc()
在有使用堆外内存的情况下,如果堆外内存申请不到足够的空间,jdk会触发一次System.gc(),来进行回收
建议:
不要频繁使用gc函数
保持代码健壮(将不用的变量置为null),让虚拟机去管理内存
最新文章
- 【深入理解计算机系统02】ISA 与内存模型
- 解决升级WordPress及插件需输入FTP账号的问题
- 用css3制作旋转加载动画的几种方法
- 建议入门-用ArcMap进行空间查询与空间连接
- SQLServer错误代码解释
- MySQL字符集编码的理解分析
- WPF中的StackPanel、WrapPanel、DockPanel
- Fizz Buzz
- 66 Plus One(大数+1Easy)
- 搭建Struts2开发环境
- android Graphics(三):区域(Range)
- UICollectionView 适配 iPhone 7 Plus
- 使用Post方法模拟登陆爬取网页
- 使用dropload.js插件进行下拉刷新
- Java使用序列化的私有方法巧妙解决部分属性持久化问题
- vim助手
- scala 基本语法
- java连接hbase时出现....is accessible from more than one module:
- 原生javascript知识点
- libjpeg.a exists or that its path is correct
热门文章
- Python获取当前脚本文件夹(Script)的绝对路径
- ajax、axios、fetch 对比
- Echo团队Alpha冲刺 - 总结随笔
- apscheduler 执行报错No handlers could be found for logger ";apscheduler.executors.default
- python 批量打印PDF
- nginx和tomcat配置负载均衡和session同步
- 01背包问题(dfs+剪枝)
- Centos7 修改为阿里的yum源
- c++ 去掉所有空格及换行符
- openjdk k8s port-forward 连接容器jmx服务