概述
三者区别
-
栈(stack)
- 1.每个线程包含一个stack,stack中是基础数据类型的对象和自定义对象的引用(不是对象),而对象都存放在heap中。(注:基础数据类型包括:boolean、byte、short、char、int、long、float、double;引用类型包括:类、接口、数组)
- 2.每个栈的数据都是私有的。其他栈不可访问。
- 3.栈有3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。 堆(heap)
- 1.提供所有类的实例和数组对象存储区域
- 2.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
- 3.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用(stack中存储),只存放对象本身 方法区(method)
- 1.静态区,被所有的线程共享(跟heap一样)。方法区包含所有的class和static变量。
- 2.运行时常量池都分配在 Java 虚拟机的方法区之中
- 3.方法区中存储的都是整个程序中唯一的元素
Demo
public class User{
}
public void run(){
User users = new User();
int a = 1;
}
-
注释:
-
1.users是User对象的引用所以放在栈(stack)中
- 2.User是自定义对象所以放在堆(heap)中
- 3.a 是基础数据类型,存于栈(stack)中
求批评。
目录
用 [TOC]
来生成目录:
-
-
- 三者区别
- Demo
- 目录
-
最后
以上就是默默砖头为你收集整理的JAVA 栈(stack), 堆(heap ) ,方法区(method)的全部内容,希望文章能够帮你解决JAVA 栈(stack), 堆(heap ) ,方法区(method)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复