2 Star 0 Fork 1

启明南/ziya-jvm-cpp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.cpp 1.08 KB
一键复制 编辑 原始数据 按行查看 历史
启明南 提交于 2021-04-28 15:47 . 内存池,垃圾回收算法
#include <iostream>
#include "include/memory/memory_pool.h"
int main() {
MemoryPool *mem_pool = new MemoryPool();
MemoryChunk *mem_chunk = mem_pool->new_chunk(78 * 2);
// 模拟分的内存超过Chunk的大小
// mem_chunk->malloc(80);
// mem_chunk->malloc(81);
// 模拟内存足够,能分到内存
MemoryCell *cell1 = mem_chunk->malloc(8);
MemoryCell *cell2 = mem_chunk->malloc(16);
MemoryCell *cell3 = mem_chunk->malloc(32);
MemoryCell *cell4 = mem_chunk->malloc(16);
*((char *)cell3->ptr()) = 'a';
*((char *)cell1->ptr()) = 'c';
INFO_PRINT("%X=====>%c, %c\n", cell3->ptr(), *((char *)cell3->ptr()), *((char *)cell1->ptr()));
// 模拟GC后因内存碎片,分不到内存
mem_chunk->malloc(40);
INFO_PRINT("%X=====>%c, %c\n", cell3->ptr(), *((char *)cell3->ptr()), *((char *)cell1->ptr()));
// 模拟出发第二次GC
// mem_chunk->malloc(40);
//
// INFO_PRINT("%X=====>%c, %c\n", cell3->ptr(), *((char *)cell3->ptr()), *((char *)cell1->ptr()));
mem_pool->print_chunks();
delete mem_pool;
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/luban-ziya/ziya-jvm-cpp.git
[email protected]:luban-ziya/ziya-jvm-cpp.git
luban-ziya
ziya-jvm-cpp
ziya-jvm-cpp
master

搜索帮助