mainform建立后,占用内存4m左右create一个datamodule,内有两个Tdatabase,分别建立与数据库(sql)的连接,完成后占用内存8m左右Free Tdatabase,Free datamodule内存未见释放,依旧占用内存8m左右不知是什么原因?有什么解决方法吗?请大家赐教

解决方案 »

  1.   

    应为你的程序向操作系统申请内存时,操作系统会加大你的堆栈,
    如果在程序中释放了对象,会从堆栈中清除对象,但操作系统不会减少堆栈
    的总大小,如果你在创建其他对象,会继续用刚才释放的堆栈。不幸你试一试,释放后又再创建,你的程序还是 8m,不会变大,
    建议用MemProfiler调试,才可以真的反映内存状态
      

  2.   

    注意:Delphi的对象不是创建在堆栈上的,而是创建在全局堆上面的,至于为什么还没有释放,需要问一下Delphi构建程序的内存管理器,以及Windows的内存管理器,你叫它释放,他不一定会真的释放。
      

  3.   

    谢谢楼上的各位,还有一个问题,是不是Delphi的程序在运行时普遍都会占用大量的内存?
      

  4.   

    你建个只有一个FORM的窗体试试就知道了
      

  5.   

    这个很正常,free只是在要释放的堆上放置一个标志,将该内存与程序关系进行脱离,但还在给的大约2兆内存中,这是我的看法。
      

  6.   

    delphi中你打开一个程序,然后关掉它,中间可以使用FREE,试着删除这个文件夹,删不掉的。