jvm是怎么分配空间的

jvm分配空间有两种方式,以下采用通俗的方式来阐述:

假如小兔子每次买胡萝卜种子以后都会在一块地里种下种子(这块地是固定的),假设每粒种子所需要的土地是一样的,那么小兔子有两种种法:

第一种:小兔子每次都买十个种子,买完以后依次种这块地上

 第二种:小兔子随机买种子,每次买的种子数都不一样,种的时候也随便找到一块能种的土地就种下

 ——————————————————————————————————————————

以上第一种方式就是jvm分配内存所对应的两种方式,

第一种是指针碰撞,这种方式是在内存绝对规整时所采用的方式, 指定一个指针,左边是用过的,右边是空的,严格要求空间一定是规整的(右边的空间一定都是空的)。

第二种是空闲列表这种方式是在内存并不规整时所采用的方式,每次选一个足够大的空间划分给对象实例。

选择哪种分配方式由 Java 堆是否规整决定,而 Java 堆是否规整又由所采用 的垃圾收集器是否带有空间压缩整理 的能力决定。因此,当使用 Serial ParNew 等带压缩整理过程的收集器时,系统采用的分配算法是指针碰撞,既简单又高效;而当使用CMS 这种基于清除 算法的收集器时,理论上 就只能采用较为复杂的空闲列表来分配内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值