Java方法内,创建对象实例后,什么时候释放内存(引用这个对象不再安全)?
原本在方法内声明并创建的对象,它的“有效范围”应该只限于这个方法,方法运行结束,方法内对象的“生命期”也应就结束了,占用的内存理论上就不再属于这些对象。但由于Java通过垃圾回收,自动管理内存中创建的对象,那么在方法内创建的对象,其“生命期”不一定就只限于这个方法,只要它被外部引用,则会在方法结束后继续“存活”(即:Java虚拟机继续保留这块内存给这个对象使用),只到那个引用它的外部因素“死亡”。
问题1:我上面的理解正确吗?
问题2:如果正确。会不会有以下问题:
public clase User{
}
public class Test{
public void fun{
User user = new User();
abc.user = user; //abc为一个外部变量
}
}
当用“Test tm = new Test();” 创建tm后,这个tm占用的内存什么时候被释放?
是不是整个tm占用的内存,都要等到那个abc失效后才会被释放?
相关推荐
java通过反射创建对象并调用方法
主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
JAVA创建和销毁对象的方法
本篇文章主要介绍了JAVA创建和销毁对象的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java中创建对象的4种方法
通过new创建对象 会创建几个完全不相同的对象 实体类: package cn.xiaov.creatobject; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age;
java实例化对象的过程
java实例化对象的过程
Java创建对象与C++创建对象的比较
本文主要对比Java与C++在创建对象时的不同,仅代表个人观点,如有不合理之处,望大家批评指正。闲话少说,直奔主题。 Java和C++都是面向对象的编程语言,然而Java和C++在创建对象时却存在不同的方式,由于方式的不同导致在内存中管理的不同。 1、C++创建对象方式 在C++中我们可以采用如下两种方式来创建对象, 1 Dog dog;//Dog为类名 2 Dog *p = new Dog(); 这两种方式在C++中都能完成对象的创建,但是在内存中的处理却完全不同。 对于第一种方式而言,dog是被存储在栈中的,占用的大小是Dog类中成员变量


