Java语言】 如何理解java的堆内存和栈内存?

2021-02-03 19:47发布

11条回答
小张同学
2021-02-09 10:49

java把内存划分为两种,一种是堆内存,一种是栈内存.

堆内存:主要用于存储数据实例化的对象,数组.有JVM动态分配内存空间.一个JVM只有一个堆内存,线程解疑共享数据

栈内存:主要用于存储局部变量和对象的引用变量,每个线程都会有一个独立的空间,所以线程之间是不会共享数据的.

    在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用.

    堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。



一周热门 更多>