DataSet.GetBookMark内存泄漏

简介: 这几天查内存泄漏,发现编辑窗体弹出后,出现了内存泄漏。 原来以为是编辑窗体的问题。经过排查发现是编辑窗体关闭后reOpen的时候 因为需要记录原有数据集的位置所以用到了BookMark 现在用了FastMM 发现之前的写法有问题   var   lvBookMark:Pointer begin   lvBookMark:=cdsMain.

这几天查内存泄漏,发现编辑窗体弹出后,出现了内存泄漏。

原来以为是编辑窗体的问题。经过排查发现是编辑窗体关闭后reOpen的时候

因为需要记录原有数据集的位置所以用到了BookMark

现在用了FastMM

发现之前的写法有问题

 

var

  lvBookMark:Pointer

begin

  lvBookMark:=cdsMain.GetBookMark;

try

    ……

finally

   if cdsMain.ValidateBookMark(lvBookMark) then

     cdsMain.GotoBookmark(lvBookmark);

  end;

……

 

这种写法会存在3字节的内存泄漏

  lvBookMark:=cdsMain.GetBookMark;

try

    ……

finally

   if cdsMain.ValidateBookMark(lvBookMark) then

     cdsMain.GotoBookmark(lvBookmark);

  cdsMain.FreeBookMark(lvBookMark)   ---加上这句。内存泄漏没有了

  end;

目录
相关文章
|
数据可视化
ShapeNet数据集及dataset代码分析
ShapeNet数据集及dataset代码分析
767 0
|
7月前
|
算法 Java 程序员
Python内存管理用引用计数(对象的`ob_refcnt`)跟踪对象,但循环引用(如A->B->A)可导致内存泄漏。
【6月更文挑战第20天】Python内存管理用引用计数(对象的`ob_refcnt`)跟踪对象,但循环引用(如A->B->A)可导致内存泄漏。为解决此问题,Python使用`gc`模块检测并清理循环引用,可通过`gc.collect()`手动回收。此外,Python结合标记清除和分代回收策略,针对不同生命周期的对象优化垃圾回收效率,确保内存有效释放。
54 3
|
机器学习/深度学习 Linux PyTorch
Dataset and DataLoader 加载数据集
Dataset and DataLoader 加载数据集
168 0
|
SQL 数据挖掘 PHP
使用array_merge导致内存不足的反思
从用户喜欢表分批拿到数据,通过array_merge()组装,再批量插入到数据分析表。 测试的时候因为数据量小,没有出现问题。随着业务增长,在查询范围内已经超过3万条数据。 3万条数据在8核32G的单机上已经提示内存溢出了。
267 0
|
SQL 人工智能 移动开发
Memory Analyzer(MAT)分析内存
MAT是Memory Analyzer tool的缩写,是一款非常强大的内存分析工具,只需要打开采集的hprof文件即可开始对内存开始分析对比,一款“傻瓜式“的堆转储文件分析工具,谁都能学会。
|
PyTorch 算法框架/工具 索引
Pytorch: 数据读取机制Dataloader与Dataset
Pytorch: 数据读取机制Dataloader与Dataset
245 0
|
存储 缓存 算法
JVM学习(三):聊聊内存泄漏(memory leak)
可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题(让JVM误以为此对象还在引用中,无法回收,造成内存泄漏)。
361 0
JVM学习(三):聊聊内存泄漏(memory leak)
VC++内存泄漏检测方法(2):Checkpoint/DumpStatistics
VC++内存泄漏检测方法(2):Checkpoint/DumpStatistics
525 0
|
运维 Java jenkins
记一次通过Memory Analyzer分析内存泄漏的解决过程
遇到的问题,项目新打的版本,过不了多长时间,项目就会挂掉。状况就是处于一种假死的状态。索引查询都很慢,几乎进行不了任何操作,慢慢卡死。 然后我们再发版时,只能基于之前打好的war包,替换或者增加class文件。