方法区、堆区、栈区存储数据的比较
方法区、堆区、栈区存储数据的比较
- 方法区
- 堆区
- 栈区
- 例子
- 堆和栈的区别
1. 方法区
- 保存所有的class文件和static变量与方法。
- 方法区中包含的都是程序中永远唯一的元素。
2. 堆区
- 存储一切new出来的对象。
- JVM中只有一个堆区,被所有的线程共享。
3. 栈区
- 存储基本数据类型的值和对象引用。
- 每个栈中的数据(基本数据类型和对象引用)都是私有的,其他栈不可以访问。
- 分为基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
4. 例子
String str = new String(“hello”);
方法区:“hello”,属于static变量
堆:new出来的对象
栈:变量str
5. 堆和栈的区别
栈类似客栈,只管点菜吃饭,快捷但自由度小(数据大小和生存期是确定的)。
堆类似做饭,较麻烦但自由度大(可以动态分配内存大小,但存取速度慢)。
参考资料:
- 堆、栈、方法区分别存放什么?
- java中的堆、栈、方法区等比较
还没有评论,来说两句吧...