黑马程序员技术交流社区

标题: 单例设计模式内存占用情况 [打印本页]

作者: 殷士剑    时间: 2012-11-15 21:30
标题: 单例设计模式内存占用情况
本帖最后由 殷士剑 于 2012-11-18 20:18 编辑

我们知道在单例模式中有一个指向自身的私有静态对象引用,那么它在内存中是怎样表示的呢?
private static Singleton instance = new Singleton();   

作者: 王玮    时间: 2012-11-15 21:50
在方法区中,有一个Singleton 类型的引用instance 指向 ,堆内存中new Singleton()的地址。。  
作者: 陈龙    时间: 2012-11-16 12:23
class Singleton
{
    //在内部产生本类的实例化对象,将属性封装
   private static Singleton instance = new Singleton();
   private Singleton(){}  //此处将构造方法进行封装
   public static Singleton getInatance()   //通过静态方法取得Singleton类的实例
   {
       return instance;
   }
}

public class SingleDemo
{
     public static void main(String args[])
    {
        Singleton s1 = Singleton.getInstance();   //访问类中的静态方法,取得对象实例
        Singleton s2 = Singleton.getInstance();

    }
}

以上程序中虽然声明了2个Singleton对象,但是实际上所有的对象都只使用instance的引用,即不管外面如何使用,最终结果只有一个实例化对象存在,内存占用情况如下图所示



作者: 殷士剑    时间: 2012-11-18 20:17
谢谢大家!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2