// new运算符为对象动态分配内存并返回对它的引用Person p1 = new Person("John Doe");// 在使用p1期间进行一些有意义的工作.........// p1不再使用// 使p1有资格进行垃圾回收p1 = null;// 调用垃圾收集器System.gc(); // p1将被垃圾收集输出将是:
Person对象 - John Doe -> 成功被垃圾收集
// 创建两个Person对象// new运算符为对象动态分配内存并返回对它的引用Person p1 = new Person("John Doe");Person p2 = new Person("Jane Doe");// 在使用p1和p2期间进行一些有意义的工作.........// p1不再使用// 使p1有资格进行垃圾回收p1 = p2;// 现在p1引用p2// 调用垃圾收集器System.gc(); // p1将被垃圾收集输出将是:Person对象 - John Doe -> 成功被垃圾收集
class PersonTest {static void createMale() {// 在createMale()完成后 , 方法内的p1对象变得不可达Person p1 = new Person("John Doe");createFemale();// 调用垃圾收集器System.out.println("在createMale()中调用GC");System.gc(); // p2将被垃圾收集}static void createFemale() {// 在createFemale()完成后,方法内的p2对象变得不可达Person p2 = new Person("Jane Doe");}public static void mAIn(String args[]) {createMale();// 调用垃圾收集器System.out.println("在main()中调用GC");System.gc(); // p1将被垃圾收集}}输出将是:在createMale()中调用GCPerson对象 - Jane Doe -> 成功被垃圾收集在main()中调用GCPerson对象 - John Doe -> 成功被垃圾收集情况4:匿名对象当对象的引用ID未分配给变量时,该对象变得不可达,从而可以进行垃圾收集 。// 创建一个Person对象// new运算符为对象动态分配内存并返回对它的引用new Person("John Doe");// 由于没有变量分配,对象无法使用,因此它变得有资格进行垃圾回收// 调用垃圾收集器System.gc(); // 对象将被垃圾收集输出将是:Person对象 - John Doe -> 成功被垃圾收集

文章插图
•使用
System.gc()方法•使用Runtime.getRuntime().gc()方法// 创建两个Person对象// new运算符为对象动态分配内存并返回对它的引用Person p1 = new Person("John Doe");Person p2 = new Person("Jane Doe");// 在使用p1和p2期间进行一些有意义的工作.........// p1和p2不再使用// 使p1有资格进行垃圾回收p1 = null;// 调用垃圾收集器System.gc(); // p1将被垃圾收集// 使p2有资格进行垃圾回收p2 = null;// 调用垃圾收集器Runtime.getRuntime().gc(); // p2将被垃圾收集
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 21,虚拟线程、结构化并发和作用域值
- 四个鲜为人知的Python迭代过滤函数
- 五个帮助初学者提高编码技术的简单方法
- AI绘画 | 纯净美丽的白色薄纱少女
- “维护者都快累死了!”Linux 宣布:LTS 版本的维护期,将从 6 年变回 2 年
- 深度学习的关键特征是什么
- 解决梯度消失问题的神经网络结构及其广泛应用
- AI绘画 | 黑发及腰的魅力少女
- 深度网络的退化问题
- 数字人点燃杭州亚运会主火炬!亚运史首个!到底是如何实现的?
