内存管理方案
来源:互联网 发布:类似社交网络的电影 编辑:程序博客网 时间:2024/05/20 14:27
内存管理方案
Memory Management System
Author: Owen
目 录
内存管理方案 1
目 录 1
1 概述 2
2 理论依据 2
2.1 不对内存进行管理 2
2.2 对内存进行内部管理: 2
3 实现方案 2
3.1 增加类名属性,用于管理登记 2
3.2 增加自创建,自销毁函数,统一管理 3
3.3 MMS管理单例 3
3.4 MMS临界变量 3
3.5 MMS接口概述 3
3.6 模式优化 6
3.7 引用相关实例 6
3.8 其他建议 7
1 概述
内存优化的方案主要是为了减少应用程序对系统内存的频繁申请释放,减少应用程序运行中的内存管理负担。可以提高系统整体的性能,而非单独应用程序。
2 理论依据
2.1 不对内存进行管理
优势: 开发人员不需要管理内存,使用可以根据需要,无需过多操作。
弊端: 内存的申请释放,对系统而言,需要做一系列的操作,比如:内存页表的修改,内存碎片重组等。如果频繁申请释放同类资源,会造成系统资源的浪费。
2.2 对内存进行内部管理:
优势: 为了减少内存的申请释放,应用程序可以记忆每次需要释放的内存块,并且再下次使用时可以直接使用,使得内存使用稳定在一定的范围内,减少系统资源的重复消耗。
弊端: 减少系统申请释放内存的开销,也增加了少量的逻辑运算,管理方案的维护。
需要对需要管理的类,做少量修改。比如 增加类名属性
3 实现方案
方案概述:
[概括为: 工厂模式] 应用程序使用内存管理单例,托管的类需要先注册名称和创建函数,需要申请某个类型的内存时,直接在对应的空闲链表中获取一个[获取函数会在返回前,清空内存块],如果不存在,则申请一个新的。在释放某个类型的内存时,将该内存指针插入空闲链表即可。
3.1 增加类名属性,用于管理登记
“仿MFC机制:
DEFINE _IMPLEMENT_RUNTIMECLASS(CLASS_NAME, BASE_CLASS_NAME,WSCHEMA,PFNNEW) \
STATIC CHAR _LPSZ##CLASS_NAME[] = #CLASS_NAME; \
CRUNTIMECLASS CLASS_NAME::CLASS##CLASS_NAME = { \
_LPSZ##CLASS_NAME, SIZEOF(CLASS_NAME), WSCHEMA, PFNNEW, \
RUNTIME_CLASS(BASE_CLASS_NAME), NULL }; \
STATIC AFX_CLASSINIT INIT##CLASS_NAME(&CLASS_NAME::CLASS##CLASS_NAME); \
CRUNTIMECLASS* CLASS_NAME::GETRUNTIMECLASS() CONST \
{ RETURN &CLASS_NAME::CLASS##CLASS_NAME; } \”
3.2 增加自创建,自销毁函数,统一管理
此处可以考虑智能指针, 或从根类继承
Create();
{
Return new ClassA();
}
Destroy();
{
Delete this;
}
3.3 MMS管理单例
使用单例模式,建立内存管理系统[简称MMS]
3.4 MMS临界变量
支持多线程处理。
MMS配置一个临界变量,用于确保链表头数据安全
每个链表头配置一个临界变量,用于确保链表数据安全
3.5 MMS接口概述
3.5.1 托管类注册
CMMS *pMMS=CMMS::GetInstance();
pMMS->Register(ClassA.classname,&ClassA.Create);
void Register(…)
{
AutoLock(&m_lock);
m_mapClassCreator[ClassA.classname]= &ClassA.Create;
}
3.5.2 托管类对象获取
ClassA *pA= pMMS->AllocateClassMemory(ClassA.classname);
Typedef list
- 内存管理方案
- 一种VxWorks内存管理方案
- Android内存泄露方案管理
- 嵌入式系统内存管理方案研究
- 嵌入式系统内存管理方案研究
- iphone内存管理的具体问题解决方案
- android 内存管理以及优化 粗略方案
- 一个基于链表的内存管理方案
- 一个基于链表的内存管理方案
- 在android上实施不会OOM的内存管理方案
- 用Buddy算法来改进uCos-ii内存管理方案
- 一种比较健壮的脚本对象内存管理方案
- 定制new和delete更改内存管理方案
- 用Buddy算法来改进uCos-ii内存管理方案
- 基于Unity5.x版本资源内存管理方案
- 【Android性能优化】Android图片加载方案--Bitmap的内存管理和优化方案
- [置顶] 【Android性能优化】Android图片加载方案--Bitmap的内存管理和优化方案
- 浅析嵌入式系统中大量小块内存申请释放的内存管理方案
- linux使用rm命令误删除恢复教程(ext4也适用)
- UITableViewCell自定义
- cocos2dx通过http获取网络时间校对
- Python教程(二)显示行号
- ubuntu 安装星际译王及离线词库(图形界面和命令行版)
- 内存管理方案
- 简单的桶排序
- 项目实践——利用标记避免表格行之间出现被重复赋值,同时避免去除自身
- KMP算法之最终实现及优化 – 数据结构和算法39
- 医药采购之供货商药品目录控制
- Thinkpad X240在Centos 7下使用ID 138a:0017或者vfs5011指纹识别
- Storm - Exception - backtype.storm.generated.InvalidTopologyExcept :null | 那伊抹微笑
- iphone launchimage
- 树 – 数据结构和算法40