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

  

转载于:https://www.cnblogs.com/baby123/p/11058222.html

System.gc()介绍相关推荐

  1. JVM:gc什么时候开始?System.gc()能保证gc一定发生吗?

    gc什么时候开始? "你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?" 在什么时候: 1.新生代有一个Eden区和两个survivor区,首先将对象放入Ede ...

  2. system.gc 性能_使用这些先进的GC技术提高应用程序性能

    system.gc 性能 应用程序性能是我们关注的重点,垃圾收集优化是取得小而有意义的进步的好地方 自动化垃圾收集(与JIT HotSpot编译器一起)是JVM中最先进,最有价值的组件之一,但是许多开 ...

  3. Java GC 介绍

    众所周知,Java程序不用像C++程序在程序中自行处理内存的回收释放.这是因为Java在JVM虚拟机上增加了垃圾回收(GC)机制,用以在合适的时间触发垃圾回收,将不需要的内存空间回收释放,避免无限制的 ...

  4. java的System.gc()的理解

    目录 什么是System.gc() 实例1 实例2 什么是System.gc() 1.在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显式触发F ...

  5. JVM学习笔记之-垃圾回收相关概念 System.gc()的理解 内存溢出与内存泄漏 STW 垃圾回收的并行与并发 安全点与安全区域 再谈引用:强引用 软引用 弱引用 虚引用 终结器引用

    System.gc()的理解 在默认情况下,通过System.gc()或者Runtime. getRuntime ( ).gc ()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试 ...

  6. jstat的小伙伴:找出system.gc的调用的小工具

    场景分析 现场环境中,造成gc频繁的可能性之一就是通过system.gc主动调用了gc.这种情况出现在开发人员业务代码,或者是jdk自身的代码中(例如nio).我们可以通过jstat -gccause ...

  7. 一个利用System.gc和finalize研究Java垃圾回收机制的练习

    源代码: package basic;public class finalizeTest {private String name;public void finalize(){System.out. ...

  8. System.gc()调用 - 适用的场景

    一.System.gc()调用 System.gc()用于调用垃圾收集器,在调用时,垃圾收集器将运行以回收未使用的内存空间.它将尝试释放被丢弃对象占用的内存.然而System.gc()调用附带一个免责 ...

  9. 您需要了解的所有有关System.gc()的信息

    在本文中,我们试图回答有关System.gc()API调用的最常见问题. 我们希望它会有所帮助. 什么是System.gc()? System.gc()是用Java,Android,C#和其他流行语言 ...

最新文章

  1. kdd cup 2019
  2. 《Objective-c》Foundation框架 -(字符串:NSString和NSMutableString)
  3. bad src image pointers
  4. 在系统出现未处理的错误时,在Global的Application_Error记录下错误
  5. ST CUBEMX 修改MCU型号
  6. ufldl matlab 工具箱,matlab的Deep Learning的toolbox 中的SAE算法
  7. (022)[工具软件]图片浏览 JPEGView
  8. 在DataWorks标准模式下统计个人账号使用资源情况
  9. php实现飘窗,JS实现网站图片飘窗效果,JavaScript悬浮广告(附详细代码)
  10. H5 FileReader对象
  11. Premiere无法导入webm格式视频的解决方法
  12. 排球积分程序功能说明书
  13. 喂信截屏win11泛白 白屏 问题解决
  14. 中文老师经常说的IB课程,到底是什么?
  15. 51单片机常用波特率初值表(11.0592M和12M)
  16. 计算机网络之CPT实验
  17. 微软人工智能-深度学习框架和工具.md
  18. 什么是模块化 ? 模块化的好处
  19. 导入/导出dBase
  20. Java培训实现月薪15k,我都经历了什么(绝不是广告)

热门文章

  1. 笔记本锁定计算机怎么解锁,笔记本电脑键盘怎么解锁呢
  2. Python之计算π值
  3. CoAP协议学习笔记 3.1 CoAP协议翻译 加密基础介绍
  4. Win10恢复照片查看器
  5. 购物车的制作 与注册表单验证
  6. huggingface.transformers任务简介
  7. 阿里云服务器建站、心选建站、定制建站有什么区别,如何选择
  8. 加拿大签证办理时解释信Explanation of Letter参考
  9. 【观察】OceanBase 4.0,单机与分布式的新拐点
  10. 什么鬼畜耳机品牌会叫做233621