Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 2.843 pregleda

Najnovija ↓

Out of memory problem, a ne bi trebalo da bude 01.06.2008. u 14:28 · pre 224 meseca #1
Imam problem u Delphiju.
Promenljiva Buf je deklarisana kao Array of DWord;
Kada probam SetLength(Buf,8*2400*2000) dobijem poruku Out of memory. Racunar ima 2GB memorije i u tom trenutku ima vise od GB slobodne memorije. Ovaj niz zauzima nesto manje od 150 MB.
O cemu se radi?
Re: Out of memory problem, a ne bi trebalo da bude 01.06.2008. u 16:45 · pre 224 meseca #2
> Promenljiva Buf je deklarisana kao Array of DWord;
> Kada probam SetLength(Buf,8*2400*2000) dobijem poruku Out of memory.
> Racunar ima 2GB memorije i u tom trenutku ima vise od GB slobodne memorije.

Meni prolazi u D7, i kada je deo steka (lokalna promenljiva) ili heapa (globalna). Kakva je situacija sa potrošnjom memorije u programu tada, možda nešto drugo okupira memoriju?
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Out of memory problem, a ne bi trebalo da bude 01.06.2008. u 18:17 · pre 224 meseca #3
I ja koristim D7. Imam jos gomilu drugih nizova. Probao sam da prvo rezervisem memoriju za ovaj veliki, a posle i za sve ostale. Tako je proslo. Zasto? Ne znam.
Re: Out of memory problem, a ne bi trebalo da bude 01.06.2008. u 21:47 · pre 224 meseca #4
Problem je fragmentacija memorije. Windows memory manager dodeljuje programima (i samom sistemu) trazene kolicine memorije, koju ti programi (u toku rada ili kada zavrse sa radom) vracaju sistemu, i tako u krug, sve bez nekog reda, pa vremenom dolazi do fragmentacije memorije, slicno kao kod hard diskova. To znaci da windows ima desetine, stotine, hiljade slobodnih blokova memorije, ali ako program trazi jedan veliki kontinualni niz slobodne memorije, Windows nije u stanju da to i omoguci pa dolazi do greske na koju se zalis. Takav problem imaju i poznatiji programi, npr.:

http://www.mathworks.com/support/solutions/data/1-1HE4G5.html

Moze se desiti da na tvojoj masini gde imas 2GB RAM memorije i ne bude neki problem da uzmes blokove od po 150MB, ali bih svakako izbegao pretpostavku da ces to moci i svakoj drugoj masini. Znaci ovde nije samo od uticaja ukupna fizicka kolicina memorije, vec i prethodno koriscenje memorije od strane samog windows-a i drugih programa na sistemu (u toku jedne sesije windows-a). Ako se racunar ne gasi duze vreme (server?) onda je stvar jos gora.

Ako je moguce promeni nacin na koji se memorija koristi tako sto ces koristiti manje blokove memorije, naravno ako je moguce, a da se performanse ne naruse. Bolji je i sporiji program koji sigurno radi, nego brz program "koji povremeno" ne radi, ili su zahtevi za njegovo izvrsavanje tesko ispunjivi u svakom trenutku.

Evo jos nekih linkova, pogledaj windows low-fragmentation heap, pogledaj kako radi windows memory manager:

http://msdn.microsoft.com/en-us/library/aa366779.aspx
http://support.microsoft.com/kb/894472
http://download.microsoft.com/...-9fde-d599bac8184a/MemMgt.docx

Re: Out of memory problem, a ne bi trebalo da bude 01.06.2008. u 22:39 · pre 224 meseca #5
Hvala za ove informacije. Nisam razmisljao o tome na ovaj nacin. Mislio sam da se memorija dodeljuje bez obzira na kontinualnost, kao sto to radi hard disk.
Inace radilo se o upisu na hard disk, pa sam hteo da u cugu upisem sto vise sa BlockWrite.
Re: Out of memory problem, a ne bi trebalo da bude 02.06.2008. u 00:59 · pre 224 meseca #6
> Inace radilo se o upisu na hard disk, pa sam hteo da u cugu upisem sto vise sa BlockWrite.

Mapiraj fajl u memoriju (memory mapped files) i onda će se promena u memoriji preslikati i na disk?
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme