网站怎么做dns解析,公司官网改版方案,政协网站建设,可以做视频网站的源码垃圾回收机制#xff08;GC#xff09; 内存管理
Java的内存管理很大程度指的就是对象的管理#xff0c;其中包括对象空间的分配和释放。
对象空间的分配#xff1a;使用new关键字创建对象即可
对象空间的释放#xff1a;将对象赋值null即可。垃圾回收器将负责所有“不…垃圾回收机制GC 内存管理
Java的内存管理很大程度指的就是对象的管理其中包括对象空间的分配和释放。
对象空间的分配使用new关键字创建对象即可
对象空间的释放将对象赋值null即可。垃圾回收器将负责所有“不可达”对象的内存空间。
垃圾回收过程
任何一种垃圾回收算法一般都要做两件基本事情 发现无用的对象。
回收无用对象占用的内存空间。
垃圾回收机制保证可以将无用的对象进行回收。无用的对象指的就是没有任何变量引用该对象。java的垃圾回收器通过相关算法发现无用对象并进行清楚和整理。 详细过程 新创建的对象绝大多数都会存储在Eden中。
当Eden区满了达到一定的比例不能创建新对象。则会触发垃圾回收GC将无用对象清理掉然后将剩余对象复制到某个Survivor中同时清理Eden区。
当Eden区再次满时会将Survivor1中的不能清空的对象存放的Survivor2中同时将Eden区中的不能清空的对象也复制到S1中保证Eden和S1均被清空。
重复多次默认15次Survivor中没有被清理的对象则会复制到年老去OldTenured区中。
当OLd区满了则会触发一次完整的垃圾回收FullGc之前新生代的垃圾回收称为minorGC
垃圾回收相关算法
引用计算法 堆中每个对象都用一个引用计数。被引用一次计数加1直接到计数为0则表示变成无用对象。优点是算法简单缺点是“循环引用的无用对象”无法被识别。 public class Student{ String name; Student friend; Public static void main (String [] args){ Student s1 new Student(); Student s2 new Student(); s1.friend s2; s2.friend s1; s1 null; s2 null; }
s1和s2互相引用对方导致他们引用计数不为0但是实际已经无用但无法被识别。 引用可达法根搜索算法 程序把所有的引用关系看作一张图从一个节点GC ROOT开始。寻找对应的引用节点找到这个节点以后。继续寻找这个节点的引用及诶单。当所有的引用节点寻找完毕之后剩余的节点则被任务是没有被引用的节点即无用的节点。 垃圾回收机制关键点 • 垃圾回收机制只回收JVM堆内存里的对象空间。 • 对其他物理连接比如数据库连接、输入流输出流、Socket连接无能为力 • 现在的JVM有多种垃圾回收实现算法表现各异。 • 垃圾回收发生具有不可预知性程序无法精确控制垃圾回收机制执行。 • 可以将对象的引用变量设置为null暗示垃圾回收机制可以回收该对象。 • 程序员可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收会有 一些效果但是系统是否进行垃圾回收依然不确定。 • 垃圾回收机制回收任何对象之前总会先调用它的finalize方法如果覆盖该方法让一 个新的引用变量重新引用该对象则会重新激活对象。 • 永远不要主动调用某个对象的finalize方法应该交给垃圾回收机制调用。