不要把TABLE等放在一个数据模块里.
所有 TABLE 应在用的时候才打开, 用完后关闭.

解决方案 »

  1.   

    Mozh(Alex)的提议值得考虑
    界面上最好不要使用太多panel这样的控件
      

  2.   

    我的程序在98中使用时系统资源只有20%!我现在准备进行第一步优化:
    1、将QUERY在使用前打开(OPEN),在使用后关闭(CLOSE);
    2、一些窗体采用动态调用:用以下代码
    Form2:=TForm2.Create(nil);
     form2.ShowModal;
     Form2.Free;
    这样会有用吗?请给我准确答案,工程较大!
      

  3.   

    Form2:=TForm2.Create(nil);
    form2.ShowModal;
    Form2.Free;这个代码我建议你改改。
    try
      Form2:=TForm2.Create(nil);
      Form2.ShowModal;
    finally
      Form2.Free;
    end;
      

  4.   

    请比较以下两段代码
    1)
    try
      Form2:=TForm2.Create(nil);
      Form2.ShowModal;
    finally
      Form2.Free;
    end;2)
     Form2:=TForm2.Create(nil);
    try
       Form2.ShowModal;
    finally
      Form2.Free;
    end;
      

  5.   

    我个人认为是2的情况,可以参照VCL 原代码。
    为什么要 Form2:=TForm2.Create(nil); 这句放在外面呢?我也不清楚。
    放在TRY里的时候编译器报FORM2没有被初始化的提示。有谁知道为什么吗?
    我也想知道!
      

  6.   

    为什么是Form2:=TForm2.Create(nil);而不是Form2:=TForm2.Create(Application);
    两者有什么区别吗?
      

  7.   

    Form2:=TForm2.Create(Application) 指定Form2的拥有者为
    Application 。也就是说Application 负责释放Form2的空间,当然是在Form2没有释放的前提下,当Application Free的时候会自动调用Form.Free。
    如果你使用Form2:=TForm2.Create(nil) 创建,也就是说你指定Form2的拥有者为nil(空指针)。那么你自己必须负责Form2内存管理也就是自己要释放Form2的空间。你自己不释放,将成为内存垃圾 :)。
      

  8.   

    我也遇到这样的问题:程序出现EOutofResource的问题,在我们的程序中大概有50多个模块,在合并30到40个模块时就会出现这个问题,现在我们把部分的模块分到另外一个程序中就没有这个问题了.想问有没有办法,处理模块过多的问题.
      在原来我们出错的程序中运行时占用的内存达到22.8MB.在我们减少合并的模块后程序能正常运行,但是内存占用还是很大,有20多MB,我现在想请问有没有方法处理内存占用过多的情况.