⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brainwashpro.pas

📁 内存管理程序
💻 PAS
字号:
unit BrainWashPro;
{$D-}


interface

uses
  Classes, windows;

type
  TMemCleaner = class(TThread)
  public
    procedure Execute; override;
  end;

procedure StartMemoryCleaner;
procedure StopMemoryCleaner;

var
  cleaner: TMemCleaner;


implementation

{$IFDEF LINUX}
uses BigBrainPro;
{$ELSE}
uses BigBrainPro;
{$ENDIF}

{ TMemCleaner }

procedure TMemCleaner.Execute;
var
  t: integer;
  u: integer;
  v: integer;
  w: integer;
  x: integer;
  man: TBlockManager;
  iTotal: integer;
  iFreed: integer;
  mancount: integer;
begin
  iFreed := 0;
  iTotal := 0;
  u := 0;
  v := 0;
  w:= 0;
  x := 0;
  mancount := 0;
  while not terminated do begin
    inc(u);
    inc(v);
    inc(w);
    inc(x);

    if (u mod 30) = 0 then
      mancount := manman.ManagerCount;

    if mancount > 50 then
      mancount := 50;

    if (u >= (90-mancount)) then begin

      if ManMan.TryLock then
      try
        ManMan.Clean;
        u:=0;
      finally
        ManMan.Unlock;
      end;
    end;
    if w = 200 then begin
      w := 0;
      iTotal := ManMan.TotalBytes;
    end;

    if v = 1 then begin
      v:=0;
      if MainMan.Freebytes > (iTotal shr 2) then begin
        MainMan.Clean;
      end;
    end;



    if ManMan.TryLock then
    try
        iFreed := 0;
        for t := 1 to ManMan.Managercount-1 do begin
          man := ManMan.Managers[t];
          if Man.TryLock then
          try
            Man.Clean;
            inc(iFreed);
          finally
            Man.Unlock;
            sleep(1);
          end;
        end
    finally
      ManMan.Unlock;
    end;

    if x=100 then begin
      x := 0;
      if ManMan.TryLock then
      try
          for t := 1 to ManMan.Managercount-1 do begin
            man := ManMan.Managers[t];              
            if Man.TryLock then
            try
              //Man.CleanPages;
            finally
              Man.Unlock;
              sleep(1);
            end;
          end
      finally
        ManMan.Unlock;
      end;
    end;


    if random(iFreed) > 4 then
      sleep(1)
    else
      if random(10) > 7 then
        sleep(1);






  end;

end;

procedure StartMemoryCleaner;
begin
  cleaner := TMemCleaner.create(false);
end;

procedure StopMemoryCleaner;
begin
  cleaner.terminate;
end;





initialization
  {$IFNDEF NOCLEAN}
  StartMemoryCleaner;
  {$ENDIF}

finalization
  //cleaner.Suspend;
  {$IFNDEF NOCLEAN}
  StopMemoryCleaner;
  {$ENDIF}

//  while not cleaner.Terminated do
//    sleep(100);

  //cleaner.free;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -