Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 3820|回复: 27
打印 上一主题 下一主题

[分享]如何優化記憶體

[复制链接]

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

跳转到指定楼层
1#
发表于 2008-11-8 01:03 PM |只看该作者 |正序浏览
作者 : Super-Tomato


昨天看到了篇帖子寫到 Firefox 記憶體溢出的問題, 所以今天周末有空就來分享如何優化記憶體分配的編程
一開始未看到這篇文章前, 應該很多人都認為這是個很複雜的技術, 但看完之後會偷笑原來這是那麼簡單就可以實現的
沒錯, 在早期要優化記憶體這種技術應該很複雜也輪不到我這種菜鳥來寫, 但 Windows 已經把這項工程給簡化了,
所以我們只要輕鬆的套用 WINAPI 就能夠解決這個問題.


那麼到底要用哪些 WINAPI 呢??
最主要的當然就是使用 EmptyWorkingSet 回收記憶體了, 這一個函數可以大大改善記憶體的使用, 至於說明就請搜索微軟的 WINAPI 吧

p/s: 但是要記得的是縮小了記憶體並非代表程式的執行速度加快了

以下是以 BCB 針對 Firefox 做為範例和演示

  1. //---------------------------------------------------------------------------

  2. #include <vcl.h>
  3. #include <psapi.h>
  4. #pragma comment(lib, "psapi.lib")
  5. #pragma hdrstop

  6. #include "Unit1.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. #pragma resource "*.dfm"
  10. TForm1 *Form1;
  11. //---------------------------------------------------------------------------
  12. __fastcall TForm1::TForm1(TComponent* Owner)
  13.         : TForm(Owner)
  14. {
  15. }
  16. //---------------------------------------------------------------------------
  17. void __fastcall TForm1::Timer1Timer(TObject *Sender)
  18. {
  19.         HWND firefox = FindWindow("MozillaUIWindowClass", NULL);
  20.         if(firefox)
  21.         {
  22.                 DWORD dProcessID;
  23.                 HANDLE hProcess;

  24.                 GetWindowThreadProcessId(firefox, &dProcessID);
  25.                 if(dProcessID)
  26.                 {
  27.                         hProcess = OpenProcess(PROCESS_ALL_ACCESS, true, dProcessID);
  28.                         if(hProcess)
  29.                         {
  30.                                 SetProcessWorkingSetSize(hProcess, 0, 0);
  31.                                 EmptyWorkingSet(hProcess);
  32.                                 CloseHandle(hProcess);
  33.                         }
  34.                 }
  35.         }
  36. }
  37. //---------------------------------------------------------------------------

复制代码



演示(非永久性連結)

[ 本帖最后由 Super-Tomato 于 2008-11-8 01:09 PM 编辑 ]




已有 1 人评分积分 收起 理由
goodday + 5 原创内容

总评分: 积分 + 5   查看全部评分

收藏收藏0

62

主题

5

好友

3715

积分

本站名嘴

Rank: 11Rank: 11

28#
发表于 2008-11-28 04:45 PM |只看该作者

回复 #27 Super-Tomato 的帖子

可能是不适合新手吧
现在我学VB容易得太容易,难的太难,所以想学其他语言


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

27#
发表于 2008-11-28 03:59 PM |只看该作者
原帖由 goodhermit95 于 2008-11-28 03:01 PM 发表
我很多问题啦~~而且很多地方怪怪的
Zero也说不建议用VS的VC++



這個見仁見智吧, 最主要是看你本身習慣使用哪種編譯器


回复

使用道具 举报

62

主题

5

好友

3715

积分

本站名嘴

Rank: 11Rank: 11

26#
发表于 2008-11-28 03:01 PM |只看该作者
我很多问题啦~~而且很多地方怪怪的
Zero也说不建议用VS的VC++


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

25#
发表于 2008-11-27 09:40 AM |只看该作者
原帖由 goodhermit95 于 2008-11-26 02:16 PM 发表
Tomato可以给我你那个C++ Compileter的下载地址吗?
Visual Studio的BUG多多,我采访一个Include再拿掉Error就10多个了


我没问题哦
吃生菜咯


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

24#
发表于 2008-11-27 12:25 AM |只看该作者
原帖由 goodhermit95 于 2008-11-26 02:16 PM 发表
Tomato可以给我你那个C++ Compileter的下载地址吗?
Visual Studio的BUG多多,我采访一个Include再拿掉Error就10多个了



http://www.codegear.com/downloads/free/cppbuilder
那天我用 vc 來測試沒甚麼問題, 但 vb 我就不清楚


回复

使用道具 举报

62

主题

5

好友

3715

积分

本站名嘴

Rank: 11Rank: 11

23#
发表于 2008-11-26 02:16 PM |只看该作者
Tomato可以给我你那个C++ Compileter的下载地址吗?
Visual Studio的BUG多多,我采访一个Include再拿掉Error就10多个了


回复

使用道具 举报

2

主题

4

好友

5461

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

22#
发表于 2008-11-13 10:10 PM |只看该作者
原帖由 Super-Tomato 于 2008-11-13 07:48 PM 发表
對啊... 剛升級, 要看看有改善了甚麼
但是有些插件在 3.0.x 中沒辦法使用就有點麻煩, 用慣了也是個禍根

的却是,就如FF刚有版本3时,IE TAB,TAB MIX PLUS等插件都不支持,浏览蛮不方便的~~~em0015


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

21#
发表于 2008-11-13 07:48 PM |只看该作者
對啊... 剛升級, 要看看有改善了甚麼
但是有些插件在 3.0.x 中沒辦法使用就有點麻煩, 用慣了也是個禍根


回复

使用道具 举报

2

主题

4

好友

5461

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

20#
发表于 2008-11-13 07:37 PM |只看该作者
原帖由 Super-Tomato 于 2008-11-13 07:21 PM 发表



好的, 沒問題



好的~谢谢分享哦~
PS:阁下刚升级FF去3.0.4版本哦~~~~~~~~


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2025-1-10 03:55 AM , Processed in 0.106985 second(s), 28 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部