一、 Java内存管理
Java程序在虚拟机(JVM)上运行。 JVM等效于Java程序和操作系统之间的桥梁。 Java程序通过JVM与平台无关,并且可以跨平台运行。在Java程序执行期间,Java虚拟机将其管理的内存划分为多个不同的数据区域,每个区域都有其自己的创建和销毁目的和时间。由Java虚拟机管理的内存将包括以下运行时数据区域,如下图所示:

主要介绍三种内存区域:堆内存,堆栈内存和方法区域

二、三种内存区域堆内存
1. JVM只有一个堆区,所有线程都共享该堆区。它是在虚拟机启动时创建的。它是虚拟机管理的最大内存。该存储区的唯一目的是存储对象实例和数组
2.堆中分配的内存由Java虚拟机的自动垃圾收集器管理
3.创建对象时,参考变量存储在堆栈存储器中,而对象存储在堆存储器中。引用变量的值是对象在堆中的第一个地址。这将建立一个连接(该参考变量实际上是一个指针),在程序超出其范围运行后释放参考变量。数组和对象本身在堆中分配。即使程序在使用new来生成数组或对象的语句所在的代码块之外运行,数组和对象本身占用的内存也不会释放。该数组和对象没有任何引用变量指向。当它变成垃圾时,无法使用该对象(因为无法找到该对象),但它仍然占用内存空间,并被垃圾收集器拿走并无限期地释放。这也是Java占用更多内存的原因,也是堆中数据存储速度较慢的原因。

堆栈内存
1.每个线程包含一个堆栈区域(并非所有线程共享),每个堆栈中的数据都是私有的,其他堆栈(线程)无法访问,并且单个堆栈的数据可以共享
2.仅将基本数据类型和自定义对象的引用存储在堆栈中(不存储对象,对象存储在堆区域中)
3.堆栈的提取速度比堆快,仅次于寄存器

方法区
1.,也称为静态区域,始终是程序中唯一的元素存储区域(例如类,静态变量)。像堆一样,它是每个线程共享的内存区域
2.它存储类信息,常量,静态变量,由即时编译器编译的代码等,这些信息已由Java虚拟机加载。
以上!
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-362709-1.html
本职是作家
可能是思维错了
即使是后面一条
销量应该很小