如何深入了解JAVA内存管理机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2005个文字,预计阅读时间需要9分钟。
前段时期粗略翻阅了《深入Java虚拟机+第二版》,可能是工作一年后的原因,看着十之八九的吃力。若整体到细节都理解,Java虚拟机涉及的内容确实颇多。或许再过两年再去细读。
前一段时间粗略看了一下《深入Java虚拟机 第二版》,可能是因为工作才一年的原因吧,看着十分的吃力。毕竟如果具体到细节的话,Java虚拟机涉及的内容太多了。可能再过一两年去看会合适一些吧。
不过看了一遍《深入Java虚拟机》再来理解Java内存管理会好很多。接下来一起学习下Java内存管理吧。
请注意上图的这个:
我们再来复习下进程与线程吧:
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
似乎现在更好理解了一些:
方法区和堆是分配给进程的,也就是所有线程共享的。
而栈和程序计数器,则是分配给每个独立线程的,是运行过程中必不可少的资源。
下面我们逐个看下栈、堆、方法区和程序计数器。
1、方法区(Method Area)
方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java堆区分开来。
本文共计2005个文字,预计阅读时间需要9分钟。
前段时期粗略翻阅了《深入Java虚拟机+第二版》,可能是工作一年后的原因,看着十之八九的吃力。若整体到细节都理解,Java虚拟机涉及的内容确实颇多。或许再过两年再去细读。
前一段时间粗略看了一下《深入Java虚拟机 第二版》,可能是因为工作才一年的原因吧,看着十分的吃力。毕竟如果具体到细节的话,Java虚拟机涉及的内容太多了。可能再过一两年去看会合适一些吧。
不过看了一遍《深入Java虚拟机》再来理解Java内存管理会好很多。接下来一起学习下Java内存管理吧。
请注意上图的这个:
我们再来复习下进程与线程吧:
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
似乎现在更好理解了一些:
方法区和堆是分配给进程的,也就是所有线程共享的。
而栈和程序计数器,则是分配给每个独立线程的,是运行过程中必不可少的资源。
下面我们逐个看下栈、堆、方法区和程序计数器。
1、方法区(Method Area)
方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java堆区分开来。

