»áÔ±£º ÃÜÂ룺 ¡¡Ãâ·Ñ×¢²á | Íü¼ÇÃÜÂë | »áÔ±µÇ¼ ÍøÒ³¹¦ÄÜ£º ¼ÓÈëÊÕ²Ø ÉèΪÊ×Ò³ ÍøÕ¾ËÑË÷  
¼¼ÊõÎĵµ > VBÎĵµ > APIº¯Êý
½Ò´©ºÅ³ÆÄÚ´æÕ¼Óü«µÍµÄÈí¼þµÄ¹î¼Æ
·¢±íÈÕÆÚ£º2006-11-13 09:42:56×÷ÕߣºÀ ³ö´¦£ºcnBeta  

ÎïÀíÄÚ´æºÍÐéÄâÄÚ´æ

ÎïÀíÄÚ´æ,ÔÚÓ¦ÓÃÖÐ,×ÔÈ»ÊǹËÃû˼Òå,ÎïÀíÉÏ,ÕæÊµµÄ²åÔÚ°å×ÓÉϵÄÄÚ´æÊǶà´ó¾ÍÊǶà´óÁË.¿´»úÆ÷ÅäÖõÄʱºò,¿´µÄ¾ÍÊÇÕâ¸öÎïÀíÄÚ´æ.

Èç¹ûÖ´ÐеijÌÐòºÜ´ó»òºÜ¶à,¾Í»áµ¼ÖÂÎïÀíÄÚ´æÏûºÄ´ù¾¡.ΪÁ˽â¾öÕâ¸öÎÊÌâ,WindowsÖÐÔËÓÃÁËÐéÄâÄÚ´æ¼¼Êõ,¼´ÄóöÒ»²¿·ÖÓ²Å̿ռäÀ´³äµ±ÄÚ´æÊ¹ÓÃ,µ±ÄÚ´æÕ¼ÓÃÍêʱ,µçÄԾͻá×Ô¶¯µ÷ÓÃÓ²ÅÌÀ´³äµ±ÄÚ´æ,ÒÔ»º½âÄÚ´æµÄ½ôÕÅ.

Ò»¸ö³ÌÐò,²»¿É±ÜÃâµØÒªÓõ½ÐéÄâÄÚ´æ,ÒòΪ²»Æµ·±Ö´ÐлòÕßÒѾ­ºÜ¾ÃûÓÐÖ´ÐеĴúÂë,ûÓбØÒªÁôÔÚÎïÀíÄÚ´æÖÐ,Ö»»áÔì³ÉÀË·Ñ;·ÅÔÚÐéÄâÄÚ´æÖÐ,µÈÖ´ÐÐÕⲿ·Ö´úÂëµÄʱºò,ÔÙµ÷³öÀ´.
Windows µÄÈÎÎñ¹ÜÀíÆ÷¿ÉÒÔ°ïÖúÎÒÃÇ¿´µ½½ø³ÌµÄÐéÄâÄÚ´æ.µ÷³öÈÎÎñ¹ÜÀíÆ÷,µã»÷²Ëµ¥¡°²é¿´¡±£­¡°Ñ¡ÔñÁС±,ÔÚ³öÏֵĴ°¿ÚÖÐ,¹³ÉÏ¡°ÐéÄâÄÚ´æ´óС¡±,ÈçÏÂ

µã¡°È·¶¨¡±,Õâ¸öʱºò,½ø³ÌÁбíÖÐÒѾ­ÏÔʾ¸÷½ø³ÌµÄÐéÄâÄÚ´æ´óС,ÈçÏÂ

Ò»¸ö³ÌÐòµ½µ×Ó¦¸ÃʹÓöàÉÙÐéÄâÄÚ´æÄØ?²»Ò»¶¨,µ«ÊÇÓ¦¸ÃÒÔÇ¡µ½ºÃ´¦µÄ·ûºÏÐéÄâÄÚ´æÔ­±¾×÷ÓÃΪ×îºÃ.

ÏÂÃæ½«½Ò´©±íÃæ¿´ÆðÀ´µ÷ÓÃÁË´óÁ¿Í¼Æ¬¡¢´óÁ¿ÔËÐпâµÄ³ÌÐò,Ϊʲô²Å¡°Õ¼Óá±²»µ½ 1 MB µÄÄÚ´æµÄ¹î¼Æ.

Ô­À´ÊÇ SetProcessWorkingSetSize º¯Êý

MSDN ¶Ô¸Ãº¯ÊýµÄ±íÊö(·­Òë):ʹÓÃÕâ¸öº¯ÊýÀ´ÉèÖÃÓ¦ÓóÌÐò×îСºÍ×î´óµÄÔËÐпռä,Ö»»á±£ÁôÐèÒªµÄÄÚ´æ.µ±Ó¦ÓóÌÐò±»ÏÐÖûòϵͳÄÚ´æÌ«µÍʱ,²Ù×÷ϵͳ»á×Ô¶¯µ÷ÓÃÕâ¸ö»úÖÆÀ´ÉèÖÃÓ¦ÓóÌÐòµÄÄÚ´æ.Ó¦ÓóÌÐòÒ²¿ÉÒÔʹÓà VirtualLock À´Ëø×¡Ò»¶¨·¶Î§µÄÄÚ´æ²»±»ÏµÍ³ÊÍ·Å;µ±Äã¼Ó´óÔËÐÐ¿Õ¼ä¸øÓ¦ÓóÌÐò,ÄãÄܹ»µÃµ½µÄÎïÀíÄÚ´æÈ¡¾öÓÚϵͳ,Õâ»áÔì³ÉÆäËûÓ¦ÓóÌÐò½µµÍÐÔÄÜ»òϵͳ×ÜÌå½µµÍÐÔÄÜ,ÕâÒ²¿ÉÄܵ¼ÖÂÇëÇóÎïÀíÄÚ´æµÄ²Ù×÷ʧ°Ü,ÀýÈç:½¨Á¢ ½ø³Ì,Ïß³Ì,Äں˳Ø,¾Í±ØÐëСÐĵÄʹÓøú¯Êý.

Ò²¾ÍÊÇ˵,¸Ãº¯Êý²»ÊǽÚÊ¡ÄÚ´æ,¶øÊÇÇ¿ÖÆ°Ñ½ø³ÌµÄÎïÀíÄÚ´æ°áµ½ÐéÄâÄÚ´æÖÐ.

ÁíÍâÓÐһЩ×ÊÁÏÉÏ˵,¸Ãº¯Êý¡°½«ÓпÉÄܵ¼ÖÂȱҳÖжÏ,ÑÏÖØÓ°ÏìÐÔÄÜ¡±.
º¯ÊýÔ­ÐÍ:
BOOL SetProcessWorkingSetSize(
HANDLE hProcess,
SIZE_T dwMinimumWorkingSetSize,
SIZE_T dwMaximumWorkingSetSize
);
ÎÒÃÇÓà VB À´×öÕâôһ¸ö¼òµ¥µÄÀý×Ó,ÊdzÌÐòÕ¼Óà 300 KB ÄÚ´æ°É.

½¨Á¢Ò»¸ö±ê×¼µÄ VB ¹¤³Ì,ÔÚ Form1 ÖзÅÖÃÒ»¸ö Timer1 ,°Ñ Interval ÊôÐÔÉèÖÃΪ 1000 (¼´ 1 Ãë).È»ºóÔÚ´úÂë±à¼­¿òÖÐÊäÈëÒÔÏ´úÂë:

Private Declare Function SetProcessWorkingSetSize Lib "kernel32" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Sub Timer1_Timer()
SetProcessWorkingSetSize GetCurrentProcess(), 50000, 100000
End Sub

È»ºóÉú³É ¹¤³Ì1.exe,Ö´ÐÐ,µ÷³öÈÎÎñ¹ÜÀíÆ÷²é¿´,·¢ÏÖÄÚ´æÕ¼ÓòŠ320 KB.Èç¹û°Ñ¶¨Ê±Æ÷¹Ø±Õ,Õâ½ø³ÌµÄÄÚ´æÒ»°ã 4 MB×óÓÒ.
±ØÐ붨ʱִÐиú¯Êý,·ñÔòÐéÄâÄÚ´æ»áÂýÂý±»µ÷³öÀ´,»Ö¸´Ô­À´µÄÄÚ´æ´óС.
Èç¹ûҪʹһ¸ö±¾À´ÐèÒªÕ¼ÓôóÁ¿ÄÚ´æµÄ³ÌÐò¼õµÍµ½¼¸°Ù KB ,ʹÓÃͬÑùµÄ·½·¨¼´¿É.

¹î¼Æ´øÀ´µÄΣº¦

Èç¹û SetProcessWorkingSetSize º¯Êý±»Õý³£Ê¹ÓÃ,ÊǷdz£ÓÐÓô¦µÄ.µ«ÊÇΪÁËÃÉÆ­Óû§µÄÑÛ¾¦,ÿÃë,ÉõÖÁ¼¸Ê®ºÁÃë¾Í°Ñ´óÁ¿ÄÚ´æÍùÐéÄâÄÚ´æÀïÃæÑ¹,¾Í»á´øÀ´ÎÞ¿ÉÔ¤¼ÆµÄΣº¦.¿´¿´ÕâÆªÎÄÕÂÔõô˵:¡°ÒòΪËûÖ»ÊÇÔÝʱµÄ½«Ó¦ÓóÌÐòÕ¼ÓõÄÄÚ´æÒÆÖÁÐéÄâÄÚ´æ,Ò»µ©,Ó¦ÓóÌÐò±»¼¤»î»òÕßÓвÙ×÷ÇëÇóʱ,ÕâЩÄÚ´æÓÖ»á±»ÖØÐÂÕ¼ÓÃ.Èç¹ûÄãÇ¿ÖÆÊ¹Óø÷½·¨À´ÉèÖóÌÐòÕ¼ÓõÄÄÚ´æ,ÄÇô¿ÉÄÜÔÚÒ»¶¨³Ì¶ÈÉÏ·´¶ø»á½µµÍϵͳÐÔÄÜ,ÒòΪϵͳÐèҪƵ·±µÄ½øÐÐÄÚ´æºÍÓ²Å̼äµÄÒ³Ãæ½»»».¡±.

û´í,Èç¹ûÄãʹÓÃÁËÕâÀàÈí¼þ,Òâζ×ÅÄãµÄÓ²Å̽«Ã¿Ã뽫 I/O ´óÁ¿Êý¾Ý;Ó²Å̵ĴÅÕ뽫ƴÃüÐýת...(µ±È»Ó²ÅÌ´ÅÕë²»¿ÉÄܲ»Ðýת^_^,Ö»ÊÇÑ¡ÔñµÃ¸üÀ÷º¦¶øÒÑ).

²»ÊÇ˵ BT ºÜÉËÄÚ´æÂð?²»È»,ÒòΪÏÖÔÚ´ó¶à BT Èí¼þ¶¼Óлº´æ¼¼Êõ.ÇÒ¿´ Bitcomet ¹Ù·½¶Ô»º´æ¼¼ÊõµÄ˵Ã÷:¡°´«Í³BT¸ßËÙÏÂÔØÊ±Ó²ÅÌ»áÏìµÃºÜÀ÷º¦,ÕâÊÇ´óÁ¿µÄËæ»ú¶ÁÈ¡Ôì³ÉµÄ.... BitComet¿ÉÒÔÓÉÓû§ÉèÖûº´æ´óС.... ¿ÉÒÔÃ÷ÏԵؿ´³öÎþÉüһС²¿·ÖÄÚ´æ×÷»º´æ¶ÔÓ²Å̵ı£»¤×÷ÓÃ.¡±

ÊDz»ÊÇÓÐÖÖÐĺ®µÄ¸Ð¾õ?Ò»ÀàÈí¼þÄþÔ¸ÎþÉüÄÚ´æ,Ò²Òª¼õÉÙ±£»¤Ó²ÅÌ;¶øÁíÍâÒ»ÀàÈí¼þ,ȴΪÁËÆÛÆ­Óû§,ÈÃCPU¡¢Ó²Å̸ü¼Ó±¼²¨......

×¥Ò»¸öÐ×ÊÖ

ÕâÀàÈí¼þ²»ÉÙ,ÎÒÒÔÆäÖÐÒ»¸ö×ÀÃæ¹¤¾ßΪÀý,½Ò´©ËüµÄ¼ÙÃæ¾ß(²»µãÃû×ÖÁË).ÔËÐиÃÈí¼þºó,ËæÒâ²Ù×÷Ò»ÏÂ,È»ºó´ò¿ª½ø³Ì¹ÜÀíÆ÷,°ÑÐéÄâÄÚ´æÁе÷³öÀ´¡£

OK,20 MB ÐéÄâÄÚ´æ,¶øÖ»ÓÐ 632 KB ÎïÀíÄÚ´æ.ϸÐĵÄÄã»á·¢ÏÖ,´ó¸Åÿ 1 Ãë,¸ÃÐж¼ÓÐÉÁ˸µÄ¸Ð¾õ,û´í,ÕâÕýÊÇÿÃëµ÷Óà SetProcessWorkingSetSize µÄ½á¹û.ÁíÍâ,ÎÒÃÇ´ò¿ª Norton Process Viewer ,²é¿´¸Ã½ø³ÌµÄ CPU Õ¼ÓÃÇé¿ö,¿ÉÒÔ¿´µ½,¾ÍËãûÓвÙ×÷¸ÃÈí¼þ,µ«ÊÇÿÃë,¶¼ÓÐ 3% µÄCPUÕ¼ÓÃÆð·ü(ËäÈ»Õâ²¢²»ÄÜ˵Ã÷ʲô).ÁíÍâ,ÄÚ´æ¿òÖпÉÒÔ¿´µ½ÎïÀíÄÚ´æºÍÐéÄâÄÚ´æµÄÕ¼ÓÃ,Á½ÕßÏàÈ¥ÉõÔ¶.´ËÍâ,¿ÉÒÔÓà Hook API ¼¼ÊõÀ´Ö¤Ã÷ÿÃëµ÷Óà SetProcessWorkingSetSize µÄÐÐΪ.

Ó¦¸ÃÔõô×ö

ÕâÆªÎÄÕÂÖ»ÏëÈÃÓû§Á˽âÈí¼þÕ¼ÓÃ×ÊÔ´µÄʵ¼Ê.¶ø³ÌÐòÔ±Ó¦¸Ã°ÑϹ¦·ò,ÕæÕý´Ó´úÂëÖмõÉÙÄÚ´æµÄÏûºÄ,¶ø²»ÊÇһζºöÓÆÓû§.µ÷Óà SetProcessWorkingSetSize »á´øÀ´Ä³Ð©ºÃ´¦,µ«ÊǺÎʱµ÷Óá¢ÈçºÎµ÷ÓÃÓ¦¸Ã·ûºÏÁ½¸öÒªÇó:
1,ÔÚ³ÌÐòÔÝʱ²»±»Ê¹ÓõÄʱºò(ÀýÈç×îС»¯);
2,ÎïÀíÄÚ´æºÍÐéÄâÄÚ´æÓ¦´¦ÓÚÒ»¸öºÏÊʵıÈÀý(¶ø²»ÊÇ 600 KB ±È 20 MB Õâô»ÄÌÆ);
3,»òÕß²»µ÷ÓÃ,Èà Windows È¥´¦Àí.
(±¾È˼¼ÊõÓÐÏÞ,¶ÔÓÚÎÄÖеĴíÎó¿ÒÇë¸ßÊÖ¸øÓèÖ¸Õý)

¡¾·µ»Ø¶¥²¿¡¿ ¡¾´òÓ¡±¾Ò³¡¿ ¡¾¹Ø±Õ´°¿Ú¡¿

¹ØÓÚÎÒÃÇ / ¸øÎÒÁôÑÔ / °æÈ¨¾Ù±¨ / Òâ¼û½¨Òé / ÍøÕ¾±à³ÌQQȺ   
Copyright ©2003- 2025 Lihuasoft.net webmaster(at)lihuasoft.net ¼ÓÔØÊ±¼ä 0.00414