我写了一个程序,大概有22M但是生成的EXE文件就有4.3M这么大,运行的时候特别耗内存,我在任务管理器里看到,占用了24,808k的内存,系统老是提示内存不足? 我应该怎么给程序减肥?在系统里是怎么释放内存的?请大家指教~

解决方案 »

  1.   

    单元不要设为自动创建,,在每个单元的关闭事件中用NIL释放内存
      

  2.   

    用free释放内存,单元自己创建, 默认是自动创建的,一运行程序就都在内存里面了
      

  3.   

    程序中用到的一些图片,特别是大幅图片用LoadFromFile动态加载
    除主窗体外,其它窗体尽可能手动创建,不放心的话,显式调用FreeAndNil释放变量占用的内存。还有就是你写的是什么程序?如果是连数据库或用了皮肤控件的话,我觉得20多M也不算不正常,只是稍大一点,特别是在程序启动前的那刹那,程序还是很吃内存的。你的内存有多大?
      

  4.   

    我用来开发的机内存有256M(SD),运行没有问题,但是拿到128M的机用就不行啦~我写的是人事信息管理系统,没有数据库和皮肤控件都有23M啦。手动创建窗体是什么概念?是不是不用在project里写上Application.CreateForm这些?我的窗体都是在project里Application.CreateForm的。可否举个例子?
      

  5.   

    是的。project菜单->option->Forms选项卡,除主窗体外的其它窗体全部移到右边的列表框上去。//手动创建某一个窗口可以这样
    Form2 := TForm2.Create(Application);
    with Form2 do
    try
      ShowModal
    finally
      Free
    end;不过,我感到纳闷的是,怎么会这么大?你一定有一些其它的特殊的情况。
      

  6.   

    我写了一个程序,大概有22M但是生成的EXE文件就有4.3M这么大???运行的时候消耗很多内存?? 可能就是 你分配了太多的内存 而没有注意及时的释放
    1 检查你的 new,getmem语句
    2 是否有很大的数据结构的对象。。