简单了解下java中的堆、栈和方法区。

堆、栈、方法区

1,首先了解下java中的数据类型。

  ①java中的八大基本数据类型:boolean, char , byte, short, int, long , float , double.

  ②除了基本数据类型外还有引用数据类型:类,接口,数组。

  这些可以去了解,主要想记录下堆、栈和方法区的理解。

2,java中的JVM内存可分为三个区:堆(heap)、堆栈(stack)、方法区(Method)。

  ①堆区

    ㈠,提供所有类的实例和数组对象存储区域

    ㈡,jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身

  ②栈区

    ㈠,每个线程包含一个栈区,栈中只保存基本数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中

    ㈡,每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。

  ③方法区

    ㈠,方法区又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

    ㈡,方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

    ㈢,运行时常量池都分配在 Java 虚拟机的方法区之中

3,举个例子

public void test(){
          Test t = new Test();
          int a = 1;
        }

        public class Test{

        }


//t是Test对象的引用所以放在栈中,Test是自定义对象所以放在堆中.

//a是基础数据类型所以在栈中.

小结:给大家分享下,感觉挺能理解进去的,错误地方请谅解,来个大牛指导下。

原文地址:https://www.cnblogs.com/lxwt/p/7878945.html