zoukankan      html  css  js  c++  java
  • System.gc()介绍

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

      

  • 相关阅读:
    java oop
    traceroute
    ping
    ICMP Internet控制报文协议
    window,centos双系统坏了
    bcm53344 gpio驱动分析
    ioctl参数cmd=2错误
    BCM_GPIO驱动测试
    C++ 类和对象
    C++ 内存管理
  • 原文地址:https://www.cnblogs.com/baby123/p/11058222.html
Copyright © 2011-2022 走看看