堆和栈的区别

127 阅读1分钟

物理地址

堆的物理地址是不连续的,性能差,分配的内存大小在运行时确定;

栈的物理地址连续,性能快,分配的内存大小在编译时确定;

存放内存

堆存放的是对象和实例数组。更关心数据的存储;

栈存放:局部变量,操作数栈,返回结构。更关心方法调用。

ps:静态变量存放在方法区,静态对象存放在堆

程序可见度

堆对于整个应用程序都是共享、可见的;

栈只对于线程是可见的。所以也是线程私有。