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代码分析
643 0
|
PyTorch 算法框架/工具 索引
Pytorch学习笔记(2):数据读取机制(DataLoader与Dataset)
Pytorch学习笔记(2):数据读取机制(DataLoader与Dataset)
701 0
Pytorch学习笔记(2):数据读取机制(DataLoader与Dataset)
|
5月前
|
算法 Java 程序员
Python内存管理用引用计数(对象的`ob_refcnt`)跟踪对象,但循环引用(如A->B->A)可导致内存泄漏。
【6月更文挑战第20天】Python内存管理用引用计数(对象的`ob_refcnt`)跟踪对象,但循环引用(如A->B->A)可导致内存泄漏。为解决此问题,Python使用`gc`模块检测并清理循环引用,可通过`gc.collect()`手动回收。此外,Python结合标记清除和分代回收策略,针对不同生命周期的对象优化垃圾回收效率,确保内存有效释放。
44 3
|
机器学习/深度学习 Linux PyTorch
Dataset and DataLoader 加载数据集
Dataset and DataLoader 加载数据集
144 0
|
PyTorch 算法框架/工具 索引
Pytorch: 数据读取机制Dataloader与Dataset
Pytorch: 数据读取机制Dataloader与Dataset
239 0
|
存储 缓存 算法
JVM学习(三):聊聊内存泄漏(memory leak)
可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题(让JVM误以为此对象还在引用中,无法回收,造成内存泄漏)。
343 0
JVM学习(三):聊聊内存泄漏(memory leak)
VS内存泄漏工具Visual Leak Detector
VS内存泄漏工具Visual Leak Detector
183 0
|
IDE 开发工具 C++
VC++内存泄漏检测方法(3):Visual Leak Detector(VLD内存泄漏检测工具)支持VS2017
VC++内存泄漏检测方法(3):Visual Leak Detector(VLD内存泄漏检测工具)支持VS2017
391 0
|
运维 Java jenkins
记一次通过Memory Analyzer分析内存泄漏的解决过程
遇到的问题,项目新打的版本,过不了多长时间,项目就会挂掉。状况就是处于一种假死的状态。索引查询都很慢,几乎进行不了任何操作,慢慢卡死。 然后我们再发版时,只能基于之前打好的war包,替换或者增加class文件。