www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Garbage collector

reply Paolo Invernizzi <arathorn NOSPAM_fastwebnet.it> writes:
Hi all,

DMD 0.159 win32, Why I don't see my memory exploding while the program 
is running?


int main(char[][] argv) {
     std.gc.disable();
     for (int i=0; i < 1000000; i++) {
         byte[] a = new byte[10000000];
     }
}

Thanks!

---
Paolo Invernizzi
May 30 2006
parent reply Daniel Keep <daniel.keep.lists gmail.com> writes:
Paolo Invernizzi wrote:
 Hi all,
 
 DMD 0.159 win32, Why I don't see my memory exploding while the program
 is running?
 
 
 int main(char[][] argv) {
     std.gc.disable();
     for (int i=0; i < 1000000; i++) {
         byte[] a = new byte[10000000];
     }
 }
 
 Thanks!
 
 ---
 Paolo Invernizzi
Well, I can only think of a few possibilities: 1. DMD is (for some reason) still collecting the old arrays. 2. DMD is smart enough to omit that line entirely since it knows you're not using it. 3. You have 9 terabytes of RAM. The only other thing I can think of is that the program is crashing, but not telling you. Have you verified that the program is getting past that for loop? -- Daniel -- Unlike Knuth, I have neither proven or tried the above; it may not even make sense. v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP http://hackerkey.com/
May 30 2006
next sibling parent reply Tom S <h3r3tic remove.mat.uni.torun.pl> writes:
Daniel Keep wrote:
 Paolo Invernizzi wrote:
 Hi all,

 DMD 0.159 win32, Why I don't see my memory exploding while the program
 is running?


 int main(char[][] argv) {
     std.gc.disable();
     for (int i=0; i < 1000000; i++) {
         byte[] a = new byte[10000000];
     }
 }

 Thanks!

 ---
 Paolo Invernizzi
Well, I can only think of a few possibilities: 1. DMD is (for some reason) still collecting the old arrays. 2. DMD is smart enough to omit that line entirely since it knows you're not using it. 3. You have 9 terabytes of RAM.
There's the fourth option => std.gc.disable is not implemented. I was also curious about this, so I checked the source and std.gc.disable/enable only seem to increment/decrement one variable that is never used... -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d-pu s+: a-->----- C+++$>++++ UL P+ L+ E--- W++ N++ o? K? w++ !O !M V? PS- PE- Y PGP t 5 X? R tv-- b DI- D+ G e>+++ h>++ !r !y ------END GEEK CODE BLOCK------ Tomasz Stachowiak /+ a.k.a. h3r3tic +/
May 30 2006
parent Daniel Keep <daniel.keep.lists gmail.com> writes:
Tom S wrote:
 Daniel Keep wrote:
 Paolo Invernizzi wrote:
 Hi all,

 DMD 0.159 win32, Why I don't see my memory exploding while the program
 is running?


 int main(char[][] argv) {
     std.gc.disable();
     for (int i=0; i < 1000000; i++) {
         byte[] a = new byte[10000000];
     }
 }

 Thanks!

 ---
 Paolo Invernizzi
Well, I can only think of a few possibilities: 1. DMD is (for some reason) still collecting the old arrays. 2. DMD is smart enough to omit that line entirely since it knows you're not using it. 3. You have 9 terabytes of RAM.
There's the fourth option => std.gc.disable is not implemented. I was also curious about this, so I checked the source and std.gc.disable/enable only seem to increment/decrement one variable that is never used...
HAHAHAHA. Oh, I wasn't expecting that one... Hopefully that gets fixed at some point :P -- Daniel -- Unlike Knuth, I have neither proven or tried the above; it may not even make sense. v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP http://hackerkey.com/
May 30 2006
prev sibling parent Tom <ihate spam.com> writes:
Daniel Keep escribió:
 
 [snip]
3. You have 9 terabytes of RAM.
LOL!!! :')
 [snip]
-- Tom;
May 30 2006