JAVA内存管理常识
来源:互联网 发布:创世传说 知乎 编辑:程序博客网 时间:2024/06/07 15:27
大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其中Method Area 和 Heap 是线程共享的 ,VM Stack,Native Method Stack 和Program Counter Register 是非线程共享的。为什么分为 线程共享和非线程共享的呢?请继续往下看。
首先我们熟悉一下一个一般性的 Java 程序的工作过程。一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢?
概括地说来,JVM初始运行的时候都会分配好 Method Area(方法区) 和Heap(堆) ,而JVM 每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器) , VM Stack(虚拟机栈)和Native Method Stack (本地方法栈), 当线程终止时,三者(虚拟机栈,本地方法栈和程序计数器)所占用的内存空间也会被释放掉。这也是为什么我把内存区域分为线程共享和非线程共享的原因,非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同,所以这也是系统垃圾回收的场所只发生在线程共享的区域(实际上对大部分虚拟机来说知发生在Heap上)的原因。
- JAVA内存管理常识
- Linux内存管理常识
- 【C语言常识】内存管理详解
- 管理常识。
- 管理常识
- 恶补内存常识之段页式存储管理(一)
- 【Java】Java内存管理
- java内存管理-堆栈内存
- java内存管理-内存回收
- JAVA内存管理
- java内存管理
- JAVA 内存管理
- JAVA 内存管理
- java得内存管理
- Java内存管理思想
- Java内存管理思想
- Java内存管理思想
- java内存管理
- winform中窗体最大化时 如何使窗体中内容也相应的全屏
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 访问android官方网站
- Android ImageView深入理解
- java ArrayList 的实现
- JAVA内存管理常识
- Android官方开发文档Training系列课程中文版:数据存储之键值对序列存储
- SD 定价公式 VOFM (例程,即Formula) (ZT)
- 服务器端集成环信即使通讯
- OpenCV--LatentSVM用法
- 进程生命周期与状态转换
- android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明
- 导航多级下拉菜单
- memcache永久有效数据丢失