加入收藏 | 设为首页 | 会员中心 | 我要投稿 南昌站长网 (https://www.0791zz.cn/)- 终端安全、安全管理、数据治理、图像分析、大数据!
当前位置: 首页 > 站长资讯 > 动态 > 正文

详解JVM内存布局及GC原理

发布时间:2021-03-23 15:02:54 所属栏目:动态 来源:互联网
导读:tack:也称为虚拟机栈,记录每个栈帧(Frame)中的局部变量、方法返回地址等。 Native Method Stack:本地(原生)方法栈,顾名思义就是调用操作系统原生本地方法时,所需要的内存区域。 上述3类区域,生命周期与Thread相同,即:线程创建时,相应的区域分配内存
  • tack:也称为虚拟机栈,记录每个栈帧(Frame)中的局部变量、方法返回地址等。
  • Native Method Stack:本地(原生)方法栈,顾名思义就是调用操作系统原生本地方法时,所需要的内存区域。

上述3类区域,生命周期与Thread相同,即:线程创建时,相应的区域分配内存,线程销毁时,释放相应内存。

另一类是所有线程共享的:

  • Heap:即鼎鼎大名的堆内存区,也是GC垃圾回收的主站场,用于存放类的实例对象及Arrays实例等。
  • Method Area:方法区,主要存放类结构、类成员定义,static静态成员等。
  • Runtime Constant Pool:运行时常量池,比如:字符串,int -128~127范围的值等,它是Method Area中的一部分。

Heap、Method Area 都是在虚拟机启动时创建,虚拟机退出时释放。

总之,程序运行时,内存中的信息大致分为两类,一是跟程序执行逻辑相关的指令数据,这类数据通常不大,而且生命周期短;一是跟对象实例相关的数据,这类数据可能会很大,而且可以被多个线程长时间内反复共用,比如字符串常量、缓存对象这类。

将这两类特点不同的数据分开管理,体现了软件设计上“模块隔离”的思想。好比我们通常会把后端service与前端website解耦类似,也更便于内存管理。

GC垃圾回收原理

1. 哪些内存区域需要GC ?

(编辑:南昌站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读