new对象的销毁

  • new创建的对象什么时候销毁?
    没有引用指向它的时候
class test  
{
	public static void main (String[] args) throws java.lang.Exception
	{
	    B b = null;
        {
            A a = new A();
            b = a.getB();
        } //离开这个花括号,a消亡,a的属性b也不复存在(注意b是变量),但是main的b还是存在
          //main的b指向a的b所指向的对象,所以在A的构造方法中new出来的b对象依然没有消亡
          //a对象有自己的内存空间,b对象有自己的内存空间
          //a的b属性只是一个指针,它指向b对象,即a的b属性的变量本身的内存保存b对象的地址
          //所以a消亡只是a的b指针变量不复存在,并不是b对象不存在,只要还有其他变量引用b的话
 
        System.out.println(b);
	}
}
class A {
    B b;
    public A() {
        b = new B();
    }
 
    public B getB() {return b;}
}
 
class B {}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中循环创建新对象的性能问题主要取决于两个因素:内存分配和垃圾回收。每次循环创建新对象时,都涉及内存的分配和释放,这导致一定的性能开销。 在循环中频繁地创建新对象可能导致内存碎片化,使垃圾回收器的效率下降。因此,为了提高性能,可以考虑以下优化策略: 1. 使用对象池:可以提前创建一批对象并将其放入对象池中,在循环中重复使用这些对象,而不是每次都创建新对象。这样可以减少内存分配和垃圾回收的开销。 2. 使用StringBuilder或StringBuffer:如果在循环中需要频繁地拼接字符串,应使用StringBuilder(或StringBuffer,线程安全的版本)来代替普通的字符串拼接操作。这样可以避免频繁地创建新字符串对象。 3. 对象复用:如果在循环中需要创建大量对象,可以考虑重用已经存在的对象,而不是每次都创建新对象。比如,可以使用对象池或者设计模式中的享元模式来复用对象。 4. 减少对象的作用域:尽量将对象的作用域限制在循环内部,避免在循环外部引用对象,这样可以减少对象的生命周期,帮助垃圾回收器更早地回收对象。 5. 使用基本数据类型:如果可能的话,将对象替换为基本数据类型,因为基本数据类型的创建和销毁开销较小。 总之,为了提高循环中创建新对象的性能,应该尽量减少内存分配和垃圾回收的开销,并尽量复用已有的对象

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值