首页 > 系统相关 >lazarus中indy内存泄漏问题

lazarus中indy内存泄漏问题

时间:2023-12-19 19:56:31浏览次数:26  
标签:泄漏 开发人员 indy FREE lazarus 内存 FINAL 单元

如果您的 Indy 应用程序中存在内存泄漏,那是因为您使用了 IdStack 或 IdThread 单元,或者依赖于它们的组件。这是设计使然,在 Delphi 中,通过向内存管理器注册泄漏来抑制泄漏报告。此功能不适用于 Free Pascal,但您可以删除故意的内存泄漏。在文件 IdCompilerDefines.inc 中,您应该替换以下行:

{.$DEFINE FREE_ON_FINAL}
{$UNDEF FREE_ON_FINAL}
有了这个:

{$DEFINE FREE_ON_FINAL}
{.$UNDEF FREE_ON_FINAL}
并重新编译拉撒路和印地。请注意,IdCompilerDefines.inc 存在于 5 个不同的目录中,您需要在所有目录中进行更改。

<翻译>警告:</翻译> 警告 泄漏已消失,但您应该阅读 IdStack.pas 和 IdThread.pas 单元中的定义相关警告,以避免潜在的 GPF 情况。阅读下面的开发人员说明。
重要的开发人员说明
泄漏不是无法释放对象的问题(显然,它们可以释放,如定义FREE_ON_FINAL时所见),而更多的是单元依赖性的问题。有问题的对象与其他单位共享,并且已经注意到,有时单位可能并不总是按照您期望的顺序最终确定,这在野外已经观察到。因此,默认情况下不会释放这些对象,而是会泄漏它们,以防以后仍被访问。泄漏很小(只有几个字节),并且仅在单元完成期间,9x% 的时间仅在应用程序关闭期间(除非您在运行时动态卸载的 DLL 中使用 Indy)。

标签:泄漏,开发人员,indy,FREE,lazarus,内存,FINAL,单元
From: https://www.cnblogs.com/jwjss/p/17914561.html

相关文章

  • lsyncd导致内存泄漏
    参考文档不释放内存,可能存在内存泄漏·期刊#623·lsyncd/lsyncd(github.com)Lsyncd导致内存泄漏。·期刊#671·lsyncd/lsyncd(github.com)背景介绍在Lsyncd-热气球!-博客园(cnblogs.com)这篇文章中记录了为何使用lsyncd以及如何使用的。近期通过top命令发现lsync......
  • mmap内存映射 --- 字符设备驱动,用户空间和内核空间映射到同一个物理内存
    内存映射可实现用户程序对设备驱动内存的直接存取示例代码:驱动层#include<linux/init.h>#include<linux/module.h>#include<linux/miscdevice.h>#include<linux/fs.h>#include<linux/slab.h>//定义kmalloc接口#include<asm/io.h>//定义virt_to_phys接......
  • linux 进程间通信 --- 共享内存(POSIX 版本)
    POSIX进程间通信POSIX进程间通信(InterprocessCommunication,IPC)是SystemV进程间通信的变体。它是在Solaris7发行版中引入的。与SystemV对象类似,POSIXIPC对象的属主、属主的组以及其他用户具有读取和写入权限,但是没有执行权限。POSIXIPC对象的属主无法将对象......
  • Servlet中访问路径配置为/*时,使用请求转发造成内存溢出
    一、问题由来最近在测试Servlet的请求转发功能,准备抽取一个公共的PageJumpTestServlet,用来做页面跳转功能。这样不用每次在测试的时候,都单独写一个Servlet用来做页面跳转。自己最初的设想时,在路径配置的时候使用/toPage/*,访问地址示例http://localhost:8080/javaWeb/toPage......
  • 多开软件对Windows电脑内存的占用情况
    当今,许多人在日常使用电脑时可能会遇到需要同时打开多个应用程序或者多个账户的情况。为了应对这种需求,一些用户选择使用多开软件来实现在同一台电脑上同时打开多个应用程序或账户的功能。然而,使用多开软件可能会对Windows电脑的内存占用产生一定的影响。首先,让我们来了解一下多......
  • 嵌入式系统中内存泄露的原因和避免措施
    在嵌入式系统开发中,内存泄露是一个常见而又隐蔽的问题,可能导致系统性能下降、不稳定甚至崩溃。本文将深入探讨嵌入式系统中内存泄露的原因,并提供一些避免措施,通过详细的代码演示展示如何在嵌入式环境中防范内存泄露。1.内存泄露的原因1.1动态内存分配未释放在嵌入式系统中,动态内......
  • Redis不同版本,内存分配,硬件的性能研究
    Redis不同版本,内存分配,硬件的性能研究前言Konwmore!Domore!Gainmore!骨折之后开始减肥.前段时间跳绳导致膝盖不舒服,现在改骑车和走路.在有限的没人有烦的时间里,还是想能够多学习一些东西.之前了解了isolcpus现在突然想内存分配可能也有性能影响.所以想研......
  • unigui显示uniTreeVview使用TUniTreeNode内存泄漏的问题【14】
    uniTreeVviewc创建一个tree,显示患者姓名(PatientName)。因为需要用到患者ID(PatientID),所以使用help:TPatientTreeNode=class(TUniTreeNode)//strictprivateFPatientID:string;functionGetPatientID:string;procedureSetPatientID(constValue:string)......
  • JVM虚拟机系统性学习-运行时数据区(方法区、程序计数器、直接内存)
    方法区方法区本质上是Java编译后代码的存储区域,存储了每一个类的结构信息,如:运行时常量池、成员变量、方法、构造方法和普通方法的字节码指令等内容方法区主要存储的数据如下:Class类型信息,如该Class为class类、接口、枚举、注解,类的修饰符等等信息方法信息(方法名称、方法返回......
  • 直播平台搭建,Java 内存溢出的排查方法
    直播平台搭建,Java内存溢出的排查方法JDK自带命令jstat-gcutil3381625020#监控jvm的内存使用情况jps-ml#输出虚拟机启动时传递给主类main()的参数,输出主类的全名jmap-F-dump:live,format=b,file=dump.bin85962#dump堆内存#分析方法#可以使用Vi......