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个。

00F23860
00F23818
00F237D0
00F23788
00F23740
00F236F8
00F236B0
00F23668
00F23620
00F235D8
00F23590
00F23548
00F23500
00F234B8
00F23470

00F23470
00F234B8
00F23500
00F23548
00F23590
00F235D8
00F23620
00F23668
00F236B0
00F236F8

若不希望在运行期间占用内存越来越大,除了使用new / dispose 外,应该使用些什么呢,待续

简单介绍一下: 若有如下类型定义,可以使用new申请空间,并在使用完后使用dispose释放。

TypePMyRec = ^TMyRec;TMyRec = recordFName: string;LName: string;end;varMyRecPtr: PMyRec;TreeViewIndex: LongInt;
beginNew(MyRecPtr);MyRecPtr^.FName := Edit1.Text;MyRecPtr^.LName := Edit2.Text;{其他处理}Dispose(MyRecPtr);
end;

delphi dispose释放内存的方法相关推荐

  1. 如何手动释放linux内存的方法,centos手动释放内存的方法

    CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本.每个版本的 CentOS都会获得十年的支持(通过安全更新方式).接下来是小编为大家收集的cento ...

  2. linux手动释放内存的方法

    Linux手动释放缓存的方法 Linux释放内存的命令: sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同 ...

  3. linux回收内存的方法,linux释放内存的方法

    Linux 释放内存方法 先看看内存使用状况 [root@node1 ~]# free -m total used free shared buffers cached Mem: 8004 6557 ...

  4. 窗口关闭后释放内存的方法

    1.在dlg类中手动增加析构函数,在析构函数中释放内存. (1)在头文件的类声明中,添加析构函数声明 class CTestDlg : public CDialog { public: virtual ...

  5. 电脑扫描文件怎么弄_彻底清除手机垃圾文件,释放内存的方法

    目前在市面上的手机,配置都特别的高了,内存64GB,128GB基本都是标配了,但各种APP种类繁多,手机内存却并不能满足大家使用需求,内存总是不够用. 几乎所有人的手机都安装有QQ,微信等软件,而这些 ...

  6. 利用二叉树的思想来实现分配和释放内存方法

    虽然大部分系统都有提供内存动态分配和释放函数(即C语言中的malloc和free函数),但是在嵌入式开发中由于系统的限制往往需要自己来实现内存管理,如在有些平台上可动态申请的最大空间不能满足程序设计的 ...

  7. 计算机释放内存的命令,巧妙将win7系统内存快速释放的方法

    当我们电脑使用的时间久了之后,就会发现每次开机的时候都会变的比较缓慢,还有在使用过程中也会运行的速度很缓慢,这可能是由于内存的高速缓存没法刷新占用了内存的资源,所以就会导致开机以及运行缓慢了,虽然电脑 ...

  8. C++ string清空并释放内存空间的两种方法(shrink_to_fit()、swap())

    说明 在STL中 vector和string 是比较特殊的,clear()之后是不会释放内存空间的,也就是size()会清零,但capacity()不会改变,需要手动去释放,说明 clear() 没有 ...

  9. activity destory掉后马上释放内存方法

    其实关心这个问题有很长很长时间了,只要是做过内存优化的战友们都非常关心非常纠结内存问题,但是这个问题却纠结的我时间最长,不过最近解决了部分. 当某一个activity被finish掉后,我们想要马上释 ...

最新文章

  1. delphi 判断鼠标 左右_外设评测HyperX Pulsefire Haste游戏鼠标分享
  2. 蓝牙模块引起电路干扰
  3. 配置hadoop集群,完全分布式模式
  4. Two ways to assign values to member variables
  5. docker -v 覆盖了容器中的文件_10分钟让你理解 docker 容器中的 uid 和 gid
  6. java使用http代理访问服务器
  7. python 并发编程目录
  8. vue(一)vue-cli安装
  9. 使用xorm工具,根据数据库自动生成 go 代码
  10. 查看linux电脑内存free命令,Linux free命令查看内存状态
  11. 主席树初探--BZOJ1901: Zju2112 Dynamic Rankings
  12. java设置http超时时间_Java设置Http请求超时时间
  13. 谷歌五笔输入法电脑版_不背字根,如何三天学会五笔输入法
  14. 手把手教你搞懂麦克风的技术指标
  15. RabbitMQ 端口详解
  16. FaWave恢复twitter的办法
  17. 猿创征文|我命由我,不由天
  18. RHCE考试题及讲解(一)
  19. Jmeter对webSocket测试
  20. 计算机网络二层技术——链路聚合原理及其配置(有这一篇就足够了)

热门文章

  1. RDP协议详细解析(一)
  2. 中国企业借东博会“走出去”将打造马来西亚首个智慧城市
  3. zabbix企业应用:通过SNMP和iDRAC监控DELL服务器硬件
  4. 如何停止CSS3的动画?
  5. ASP.NET生成静态页面的简单实现
  6. 老话长谈:通过windows下共享看第六代青年
  7. Python命令行参数
  8. 算法2(二分查找法)
  9. 4_1网络学习第一天后感--网络数据下载
  10. nginx的gzip压缩