How to reuse the space of RAM of an array of strings?

Giovanni Di Maria calimero22 at yahoo.it
Fri Dec 21 20:41:10 UTC 2018


Hi. Can you help me please?
I asked also to "General Group" but i haven't solved my problem.
I have tried many experiments but without success.
I have a dynamic array of strings:
string[] vec;

After to have inserted dynamically 5_000_000 strings to array, 
for six times, i measure the RAM with an utility (for example 
Wise Memory Optimizer), deleting the array every time.

Every time I destroy the array, but the RAM is always less.
In particular:

- at beginning the FREE RAM is 1564 MB;
- after first loop the FREE RAM IS 1480 MB
- after second loop the FREE RAM IS 1415 MB
- after third loop the FREE RAM IS 1402 MB
- after forth loop the FREE RAM IS 1338 MB
- after fifth loop the FREE RAM IS 1280 MB
- after sixth loop the FREE RAM IS 1200 MB
- at end the FREE RAM returns to 1564 MB

I want to reuse the dynamic array.

This is the program:

import std.stdio;
string[] vec;
void main()
{
     alloca();
     alloca();
     alloca();
     alloca();
     alloca();
     alloca();
}

void alloca()
{
     vec.destroy;
     writeln("Filling .....");
     for (int i = 0; i < 5000000; i++)
         vec ~= "1234567890ABCDEFGHIL123456";
     writeln("Array occupation: ", vec.capacity);
     writeln("Press <ENTER>");
     readln();
}

P.S.
I have tried: free(), destroy(), minimize(), GC, collect(), etc 
but without success.

Can you help me please?
Thank you very much
Giovanni Di Maria


More information about the Digitalmars-d-learn mailing list