In c# is de grootste mogelijke array gelijk aan het grootste continue vrije geheugen blok. Graag wil ik van te voren weten hoe groot dit "largest continuous memory block" is zo dat ik niet halverwege het renderen van een 3D volume met exceptions zit...
Voor het verkrijgen van het "largest continuous memory block" heb ik al gekeken naar:
System.Runtime.MemoryFailPoint, CIM_OperatingSystem en andere WMI en CIM libraries, maar nog niet de oplossing gevonden. Dus als iemand een nette oplossing weet
?
Mijn huidige (tijdelijke) oplossing:
Voor het verkrijgen van het "largest continuous memory block" heb ik al gekeken naar:
System.Runtime.MemoryFailPoint, CIM_OperatingSystem en andere WMI en CIM libraries, maar nog niet de oplossing gevonden. Dus als iemand een nette oplossing weet
Mijn huidige (tijdelijke) oplossing:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| private int LargestContinousblock() { int succes_size = 0; // Largest array succes in(MB) int size = 1000; // Start test 1000MB for (int i = 0; i < 15; i++) // Find largest possible array { GC.Collect(); if (Continousblock_test(size)) { size += (size / 2); if (size > succes_size) succes_size = size; } else size = size / 2; } GC.Collect(); return succes_size; } private static Boolean Continousblock_test(int size) { try { byte[] testarray = new byte[size * 1048576]; } catch { return false; } return true; } |
'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'