GC垃圾回收机制



GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
System.gc() ;
Runtime.getRuntime().gc() ;
但JVM可以屏蔽掉显示的垃圾回收调用。 

垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低优先级的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。在Java诞生初期,垃圾回收是Java最大的亮点之一,因为服务器端的编程需要有效的防止内存泄露问题,然而时过境迁,如今Java的垃圾回收机制已经成为被诟病的东西。移动智能终端用户通常觉得iOS的系统比Android系统有更好的用户体验,其中一个深层次的原因就在于
与垃圾回收相关的JVM参数:
·        -Xms / -Xmx — 堆的初始大小 / 堆的最大大小
·        -Xmn — 堆中年轻代的大小
·        -XX:-DisableExplicitGC — 让System.gc()不产生任何作用
·        -XX:+PrintGCDetails — 打印GC的细节
·        -XX:+PrintGCDateStamps — 打印GC操作的时间戳
·        -XX:NewSize / XX:MaxNewSize — 设置新生代大小/新生代最大大小
·        -XX:NewRatio — 可以设置老生代和新生代的比例
·        -XX:PrintTenuringDistribution — 设置每次新生代GC后输出幸存者乐园中对象年龄的分布
·        -XX:InitialTenuringThreshold /-XX:MaxTenuringThreshold:设置老年代阀值的初始值和最大值
·        -XX:TargetSurvivorRatio:设置幸存区的目标使用率

猜你喜欢

转载自blog.csdn.net/weixin_41648325/article/details/80814802