内存分配管理之Largeobjectspace

简介: 内存分配管理之Largeobjectspace

什么是Largeobjectspace

该空间是专门针对所谓需要大内存对象的内存分配器

判定规则

1.如果分配一个对象的内存超出了某个值就会吧这个对象放到这块空间中,可以理解为针对大对象的分配单独创建了一个largeobjectspace空间进行分配内存。

2.对象的数据类型是有限制的:必须是基础类型的数组,或者是string类对象。

不同于其他分配算法。这个largeobjectspace的分配内存的方式是进行直接mmap映射一块操作系统的内存进行分配内存。一个对象对应的就是一块mmap的内存

其他分配算法

1。bumpspace通过指针碰撞来分配内存,由于他是一块内存连续的空间,所以进行这种分配算法效率最高,每次分配时维护一下当前该分配到哪块内存即可。这种常用于线程本地分配tlab使用。

这种回收内存会造成碎片化,因为内存分配是连续的但是回收的时候没有进行额外处理而是直接将那块内存回收掉,所以碎片化非常严重。

2。regonspace把内存分为一块regon,分配时按照regon进行分配。一块一块的regon,内存回收时是按照拷贝算法,回收时进行拷贝活着的对象,死亡对象进行清除。

3。后面art虚拟机采用了更复杂的内存分配算法和回收算法,也就是degleeote和allotec

分配内存更加严格,slot代表内存分配基本单位,run是进行内存分配时用到的,可以理解为是管理slot内存的。

对run进行操作run内部在根据空闲的slot空间进行分配内存。

当run内部对slot没有空闲的时候,会进行加锁分配内存保证安全。

第四种就是Largeobjectspace了,针对大对象的分配。直接从操作系统mmap映射内存使用,直呼好家伙~



相关文章
|
缓存 负载均衡 算法
“软件系统三高问题”高并发、高性能、高可用系统设计经验
​ 总的来说解决三高问题核心就是 “分字诀” 业务分层、系统分级、服务分布、数据库分库/表、动静分离、同步拆分成异步、单线程分解成多线程、原数据缓存分离、分流等等。。。。 直观的表述就是:从前端用的CDN、动静分离,到后台服务拆分成微服务、分布式、负载均衡、缓存、池化、多线程、IO、分库表、搜索引擎等等。都是强调一个“分”字。
4055 0
“软件系统三高问题”高并发、高性能、高可用系统设计经验
|
11月前
|
SQL 安全 关系型数据库
PHP作为一种流行的服务端脚本语言,在Web开发领域具有显著的优势
【10月更文挑战第11天】PHP作为一种流行的服务端脚本语言,在Web开发领域具有显著的优势
126 0
每日三题-岛屿数量、合并二叉树、课程表
每日三题 岛屿数量 合并二叉树 课程表
88 1
每日三题-岛屿数量、合并二叉树、课程表
|
Perl
剑指offer 06. 重建二叉树
剑指offer 06. 重建二叉树
83 0
|
缓存 前端开发 Java
LiveData 面试题库、解答、源码分析(下)
LiveData 面试题库、解答、源码分析
266 0
|
流计算 资源调度 消息中间件
Apache Flink 的迁移之路,2 年处理效果提升 5 倍
在 2017 年上半年以前,TalkingData 的 App Analytics 和 Game Analytics 两个产品,流式框架使用的是自研的 td-etl-framework。该框架降低了开发流式任务的复杂度,对于不同的任务只需要实现一个 changer 链即可,并且支持水平扩展,性能尚可,曾经可以满足业务需求。
|
Kubernetes 安全 Java
2018 DockerCon 欧洲大会召开在即,精彩内容不容错过!
参加会议的价值在于您可以在会上学习到多少新知识以及您在会场可以遇到哪些人。DockerCon 大会很好的涵盖了这两个方面,同时我们还知道每个人都有着不同的学习方式,为此我们的会议为您提供了三种选择......
1972 0
|
Java
Java多线程学习(四)等待/通知(wait/notify)机制
欢迎关注我的微信公众号:**“Java面试通关手册”**(分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取)。另外我创建了一个Java学习交流群(群号:**174594747**),欢迎大家加入一起学习,这里更有面试,学习视频等资源的分享。
2581 0
|
SQL 监控 Oracle
ORACLE startup报错之ORA-01154&&ORA-01155&&ORA-01033&&ORA-03113
    今天,一实施同事求助,说一地市oracle数据库无法通过远程连接,连接报错如图: 操作系统:windows server2008 R2  数据库版本:oracle 11.2.0.1 初看报错貌似数据库正处在打开或关闭的过程中。
1766 0