Arsip: SetLength,memory leak

more 15 years ago
jordan
Hi,
misal g punya array of record, kyk gini :
type
TDetail = record
A:String;
B:String;
end;
TMyData = record
Kode:String;
Nama:String;
Harga:Currency;
Detail:Array [1..12] of TDetail
end;
var MyData : Array of TMyData;
procedure satu;
begin
SetLength(MyData,700000);
.......
.......
.......
end;
di procedure lain g panggil SetLength(MyData,0). g pikir SetLength(0) bakal me-release memory yg sdh terpakai, tp setelah g coba jalanin programnya sebanyak 3x (tanpa tutup & buka aplikasi baru), muncul error Out of memory.
Waktu jalanin program, g lihat memory usage di taskmanager, saat SetLength(0) dipanggil, memory usage di taskmanager bener2 turun, tp ternyata tetep muncul error out of memory, bahkan komputer g jadi lama jalannya.
Sudah coba google tentang memory leak, dpt 1 artikel, menurut artikel nya:
"Try to minimze and restore the application. I'm not joking, it has to do
with the updating of counters in NT performance. Freed memory still counts
as allocated in Task manager unless you minimize the application."
jadi di procedure yg manggil SetLength(0) g buat kyk gini:
procedure dua;
begin
SetLength(MyData,0);
Application.Minimize;
Sleep(5000);
Application.Restore;
end;
g coba gak berhasil, masih keluar error out of memory, hanya klo di-minimize, memang memory usage di taskmanager jd jauh berkurang lg.
Ada yg punya saran gimana perbaikin error nya?
thx
more 15 years ago
mat_koder
ooops........
kode berikut ( di D7 pake MM bawaan Delphi) ngga ada errornya walaupun dilaunch 10 kali ( ada 10 aplikasi yg sama dijalankan dan masing-masing aplikasi memakai memory sekitar 78Meg waktu setlength 700000 dan jadi 2 Meg setelah di setlength= 0).
Tentunya masing masing dijalankan setelah aplikasi sebelumnya selesai menjalankan proses de-allokasi.
type
TDetail = record
A:String;
B:String;
end;
TMyData = record
Kode:String;
Nama:String;
Harga:Currency;
Detail:Array of TDetail
end;
var MyData : Array of TMyData;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure satu;
begin
SetLength(MyData,700000); // alokasi
SetLength(MyData,0); //de-allokasi
end;
initialization
satu;
kesimpulan:
di statement SetLength(MyData,0) , string-string yg ada semuanya juga langsung di-freed tanpa menunggu aplikasi terminate.
kayanya ada yg ngga lengkap dalam penuturan masalah anda.
more 15 years ago
DelphiExpert
SetLength(MyData, 700000); // get mem
...
MyData:= nil; // free mem
...
SetLength(MyData, SomeSize); // get mem, re-use
...
MyData:= nil; // free mem

more 15 years ago
cikumiyu
kesimpulan: ... di statement SetLength(MyData,0) , string-string yg ada semuanya juga langsung di-freed tanpa menunggu aplikasi terminate.Setuju! Seharusnya itu ngga jadi masalah. Letak salahnya bukan masalah alokasi dan dealokasi array. Ada yang lain.
more ...
- Pages:
- 1
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 2 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 3 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 10 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 10 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 10 years ago
Random Topic
- Delphi codenames
by deLogic in Hal umum tentang Pascal Indonesia more 17 years ago - Asosiasi Pengembang Software Indonesia, menarikkah?
by LuriDarmawan in OOT more 15 years ago - Kirim EMail Secara langsung dari Aplikasi
by radithya in MySQL more 14 years ago - Need Help : Mo belajar bikin bel ...
by tox2wow in Multimedia & Graphic Enhancement more 16 years ago - Ada yang pernah coba Zeos + SQLite3 + Delphi 2010?
by mambamaestro in Hal umum tentang Pascal Indonesia more 12 years ago - Cuman Tanpilan doang
by lela in MySQL more 17 years ago - Error TIdSocketHandles
by hak3nd3n in Tip n Trik Pemrograman more 14 years ago - Buat Aplikasi tanpa form dan memakai timer
by DeulleDo-X in Hal umum tentang Pascal Indonesia more 17 years ago - Showmessage di tengah2 form
by r_rie in Tip n Trik Pemrograman more 14 years ago - if pada memo
by nurez in Tip n Trik Pemrograman more 15 years ago