请给我解释下 栈与堆?它们在内存里氏怎么存放和调用的,最好用图来给我解释下,谢谢了!!!  还有一个问题,Java程序设计为什么要用分层,现在我们学分层,听得迷茫,有什么办法能学会?     还有工厂模式和单列模式使用它们的好处是什么?这一点也很迷茫,求方法!!    谢谢!!!

解决方案 »

  1.   

    楼主;
    java的堆是一个运行时数据区,类的对象在堆中分配空间,这些对象通过new运算符创建,它们不需要程序代码来显式的释放内存空间,堆是由java垃圾回收器负责管理的;
    堆的优势在于可以动态的分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,java垃圾回收器会自动回收,不再使用数据,但缺点是由于要在运行时动态分配内存,存取速度较慢;
    栈的优势在于存取速度比堆快,仅次于寄存器,栈数据可以共享,但缺点是存在栈中的数据大小与生存期必须是确定的,缺乏灵活性,栈主要存放一些基本数据类型变量和对象句柄。工厂模式::
    http://blog.csdn.net/cjjky/article/details/7346893
    单例模式:
    http://blog.csdn.net/cjjky/article/details/7318506
      

  2.   

    时间太晚了,我简单说下。栈是JVM中用来存放基本变量、方法名、对象引用等,存放时自然以数据结构中的栈的形式来存储了。堆则不是数据结构中堆的概念,是指一片存储区,存储对象的实体,一般通过new来产生,通过GC来回收。
    分层是为了更加灵活,一方面系统能够分开维护,升级,修改;另一方面利于分工
    工厂模式的好处是扩展性好,可以自由地添加新功能而无须较大的修改;单例模式主要是用来维护一个全局变量。