|

分享源码
界面截图: |
|
是否带模块: |
调用了模块 |
备注说明: |
- |
本帖最后由 凌哥 于 2024-6-14 19:54 编辑
这东西从2020年做好到现在也4年了,我基本没怎么更新
设计思路就是很简单的用多个链表数组来适配不同大小的内存分配需求
得承认纯易语言代码还是不够快,而且虽然我已经实现了内存回收的功能,但效率太低
又因为mimalloc已经很稳定了,这个内存池也就一直放着,甚至是模块其他地方已经用大量的内联汇编优化了,内存池我也一直懒得动
已从凌哥E编程模块Dev版本中移除,不再为该内存池维护更新 (有没有可能我又搞个新的?) 该源码无法直接运行,会的人一眼就懂原理
开源顺便留个代码备份,这玩意儿其实算是在易语言这块,第一个用纯E代码实现这类设计的内存池吧
L_内存池.e
(176.89 KB, 下载次数: 63)
内存池的更新记录:
v4.0.0.20240523
优化:L_内存池(类) 现在默认使用mimalloc单线程模式
v3.3.1.20220522
修复:L_内存池(类) 中的一处严重BUG,这个问题会导致高并发情况下的内存泄漏
v3.2.8.20220215
修复:L_全局_内存池(类) 中的一处严重BUG,该BUG会导致软件性能大幅度下降的同时,还有几率崩溃
v3.2.6.20211102
修复:L_全局_内存池(类) 内部控制线程在归还内存给操作系统时数组越界的BUG
优化:L_全局_内存池(类) 内存块存储方式调整为 L_整数型数组_*() 性能提升
优化:L_全局_内存池(类) 内存分配数量阈值调优,性能更高了(小内存块的预分配数量为32-64KB)
v3.2.5.20211010
新增:L_全局_内存池(类) 内部重新封装mimalloc内存池(在非XP系统下启用)
优化:L_全局_内存池(类) 解决了使用mimalloc内存池时线程数量过多导致内存占用非常大的问题
v3.2.4.20210909
内存池:模块内部的全局内存池(L_内存池) 新增内存归还到系统的功能,并且提升了大量线程并发申请/释放内存的性能
v3.1.4.20210514
修复:L_内存池(类)>>>重新分配() 在内部使用内存堆分配大数据时导致崩溃的问题
修复:L_队列(类) 内存访问越界导致模块全局内存池数据异常的问题
修复:L_链表(类) 由内存池分配的内存数据未清零导致的内存泄漏与死循环的问题
优化:L_内存池(类)>>>重新分配() 的内部逻辑,条件允许时会将之前超出[最大分配内存]的地址重新转入内存池中
v3.1.3.20210415
优化:L_内存池(类) 将默认分配的内存数量与长度设置得更加激进,效率提升
优化:模块内部所有主动内存分配的方式全部改为调用 L_内存池(类)
v3.1.2.20210316
新增:L_内存池(类) >>> 重新分配() 用于调整已分配的内存指针
v3.1.1.20210128
修复:L_内存池(类) 一个逻辑值写反导致异常崩溃的BUG
v3.1.0.20201217
新增:L_全局_内存池(类) 原生线程安全,已声明为全局变量"L_内存池"
|
评分
-
查看全部评分
|