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),让虚拟机去管理内存

  

最新文章

  1. 【深入理解计算机系统02】ISA 与内存模型
  2. 解决升级WordPress及插件需输入FTP账号的问题
  3. 用css3制作旋转加载动画的几种方法
  4. 建议入门-用ArcMap进行空间查询与空间连接
  5. SQLServer错误代码解释
  6. MySQL字符集编码的理解分析
  7. WPF中的StackPanel、WrapPanel、DockPanel
  8. Fizz Buzz
  9. 66 Plus One(大数+1Easy)
  10. 搭建Struts2开发环境
  11. android Graphics(三):区域(Range)
  12. UICollectionView 适配 iPhone 7 Plus
  13. 使用Post方法模拟登陆爬取网页
  14. 使用dropload.js插件进行下拉刷新
  15. Java使用序列化的私有方法巧妙解决部分属性持久化问题
  16. vim助手
  17. scala 基本语法
  18. java连接hbase时出现....is accessible from more than one module:
  19. 原生javascript知识点
  20. libjpeg.a exists or that its path is correct

热门文章

  1. Python获取当前脚本文件夹(Script)的绝对路径
  2. ajax、axios、fetch 对比
  3. Echo团队Alpha冲刺 - 总结随笔
  4. apscheduler 执行报错No handlers could be found for logger "apscheduler.executors.default
  5. python 批量打印PDF
  6. nginx和tomcat配置负载均衡和session同步
  7. 01背包问题(dfs+剪枝)
  8. Centos7 修改为阿里的yum源
  9. c++ 去掉所有空格及换行符
  10. openjdk k8s port-forward 连接容器jmx服务