delphi dispose释放内存的方法
dispose使用方法的简单介绍在本文末尾。
定义一个record 类型,经过多次new dispose后,从windows任务管理器看,占用的内存比启动时大了很多,似乎越来越大
设置 ReportMemoryLeaksOnShutdown := true; 再运行,仍然没有提示 memory leak。
其实就是dispose 本身的原因。
delphi设计的 dispose 释放内存时,只是标记这部分内存可以再用来被 new 等函数分配,并不是把从系统申请到的内存归还给操作系统,只在程序结束时,才全部释放给操作系统。
比如 new 申请 15 个记录(sizeof=64字节) 的空间,然后 dispose 释放。再使用 new 申请 10个,此时这 10 个就不再请求系统了,直接从刚才的 15个 (此时已经空闲) 中分10 个出来。只有在占用的空闲内存不够使用时,才请求操作系统分配内存(剩余部分)。
若前一次15个空间地址如左列,释放后,下一次10个空间的地址如右列,即从前次分配的最后一个地址开始,按前次的顺序,倒过来分配10个。
|
|
若不希望在运行期间占用内存越来越大,除了使用new / dispose 外,应该使用些什么呢,待续
|
|
http://blog.csdn.net/luo809976897/article/details/20134007
最新文章
- ML 基础知识
- LeetCode-Search in Rotated Sorted Array II
- Scalaz(17)- Monad:泛函状态类型-State Monad
- hihocoder #1333 : 平衡树·Splay2
- 使用POI实现数据导出Excel表格
- 今天弱爆了,svn创建项目
- 这些年,我收集的JavaScript代码
- Css3 Media Queries移动页面的样式和图片的适配问题(转)
- Keil c51现No Browse information available
- stdafx文件介绍
- [html5] 学习笔记-编辑 API 之 Range 对象(一)
- block之---应用场景:做参数和返回值
- java写文件读写操作(IO流,字节流)
- WebService--jax
- 单行json_ajax
- 【转】对GAMIT/GLOBK的基本认识
- JavaSE_坚持读源码_Class对象_Java1.7
- Git创建本地仓库并推送至远程仓库
- 保存登录plsql developer 的用户名和密码
- 雷林鹏分享:C# 多态性
热门文章
- Android 在子线程中更新UI的几种方法
- node 调用Python exec child_process 模块
- sqlplus登录信息,列出所有表,列在表结构,sqlplus行和列显示设置,别名,Null值问题,细木工,DISTINCT
- UVA 548(二进制重建和遍历)
- 分布式高级(十三)Docker Container之间的数据共享
- .Net Remoting的双向通信和Windows Service的宿主服务
- OpenCV 图像清晰度评价(相机自动对焦)
- Python 爬虫 —— BeautifulSoup
- OpenGL(十二) 纹理映射(贴图)
- 避免让WPF资源字典变得杂乱臃肿