程序内存的动态改变部分可以分成两个区:
栈(stack):内存总是向一个方向增加或向相反方向减少,这个内存区用于存放方法或块中声明的局部变量。遇到局部变量声明时内存增长,退出方法或块时这些变量弹出栈。
堆(heap):用于存储对象,对象的引用放在栈区,但是对象的数据区必须存放在堆中。堆是内存单元构成的一个巨大的表。New语句生成新对象时,保留的小块内存单元随时进行分配,一个内存单元块不再被现有变量引用时,这些不用的单元被释放和收集起来。
堆内存存放的有:String、基本数据类型、对象引用、static静态代码块等
栈内存存放的有:StringBuffer、对象等 |