每一个Java应用都唯一对应一个JVM实例,每一个实例唯一对应一个堆 。应用程序在运行中所创建的所有类实例或数组都放在这个堆中,并由应用所有的线程 共享.跟C/C++不同,Java中分配堆内存是自动初始化的 。Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在栈中分配,也就是说在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在栈中分配的内存只是一个指向这个堆对象的指针(引用)而已 。
Java 把内存划分成两种:一种是栈内存,另一种是堆内存 。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用 。
推荐阅读
- 饼茶和圆茶的压制历程,2013年中茶普洱布朗经典生茶新品上市
- 在 Ubuntu 和其他 Linux 发行版上使用 Yarn
- 龙井和铁观音哪个好,西湖龙井和狮峰龙井哪个好
- Linux 软链接和硬链接
- 到底什么是Hash?Hash算法的原理和实际应用讲解
- 六安瓜片的功效和作用,笑堂六安瓜片的功效作用
- 碧螺春和雀舌,雀舌茶叶
- 鸿蒙开发环境搭建、源码下载和编译
- Web漏洞及防御 CSRF和SSRF
- 安吉白茶的保存,福鼎白茶和安吉白茶有什么区别
