JAVA基础:(18)java内存分区

时间:2022-05-20 10:26:31

    java虚拟机(JVM)是java学习的重点和难点,以我现在的水平还不足以理解深层次的理论知识,暂且把自己目前接触到的关于java虚拟机的知识记录下来,以后系统地学习java虚拟机的原理再做具体的分析。
    JVM分区:堆(heap)、栈(stack)、方法区(method)

1.堆区:

        ①用来存储类实例和数组对象,所有引用类型的对象都在堆区开辟空间,包括字符串String。

        ②存放对象本身,不存放对象引用,只有一个堆区被所有线程共享。

        ③执行速度没有栈区快,但内存空间远大于栈区。

        ④使用堆区空间,要使用new的方法开辟空间。

2.栈区:

        ①存放基本数据类型和对象的引用,对象存在于堆中。

        ②栈中的数据都是私有的,其它栈不能访问。

        ③开辟的空间是自动分配的,空间有自己的地址,java中所有变量都在栈区。

        ④直接通过CPU执行,速度仅次于寄存区的执行。

        ⑤空间大小有限,比堆区,方法区都要小。

3.方法区:

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

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

        ③运行时常量池都分配在java虚拟机的方法区之中。

*作者qq:57363961    微信:qq57363961    愿广交朋友,本人初学java,欢迎java学习者讨论和指教*