java内存管理机制剖析(一)

最近利用工作之余学习研究了一下java的内存管理机制,在这里记录总结一下。

1.1 java内存区域

当java程序运行时,java虚拟机会将内存划分为若干个不同的数据区域,这些内存区域创建和销毁的时间各不相同,所承担的功能也不相同,他们各司其职,各尽所责。这些区域的划分如下图
image.png

运行时数据区主要有五个区,分别是 堆 ,方法区,虚拟机栈,本地方法栈,程序计数器,下面我来一一详细讲解这五个数据区

java堆是java虚拟机管理内存中最大的一块,它是被所有线程共享的一块内存区域,在虚拟机启动时创建,此内存的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在堆分配内存

java虚拟机规定,java堆可以处于物理上不连续的内存空间中,只要逻辑上连续即可。在实现时,既可以实现固定大小的,也可以是扩展的,可以通过配置-Xmx和-Xms来扩展大小。如果堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError

方法区

方法区也是被所有线程共享的一块内存区域,在Java虚拟机规范中,方法区是堆的逻辑组成部分,但他又被与堆区分开来,别名称为Non-Heap,它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值