diff options
Diffstat (limited to 'tests/fragmentation/tfragment_alloc.nim')
-rw-r--r-- | tests/fragmentation/tfragment_alloc.nim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/fragmentation/tfragment_alloc.nim b/tests/fragmentation/tfragment_alloc.nim new file mode 100644 index 000000000..cd45e2c47 --- /dev/null +++ b/tests/fragmentation/tfragment_alloc.nim @@ -0,0 +1,35 @@ + +discard """ + output: '''occupied ok: true +total ok: true''' + disabled: "true" +""" + +import strutils, data + +proc main = + var m = 0 + for i in 0..1000_000: + let size = sizes[i mod sizes.len] + let p = alloc(size) + if p == nil: + quit "could not serve request!" + dealloc p + # c_fprintf(stdout, "iteration: %ld size: %ld\n", i, size) + when defined(cpu64): + # see https://github.com/nim-lang/Nim/issues/8509 + # this often made appveyor (on windows) fail with out of memory + when defined(posix): + # bug #7120 + var x = alloc(((1 shl 29) - 4) * 8) + dealloc x + +main() + +let occ = getOccupiedMem() +let total = getTotalMem() + +# Current values on Win64: 824KiB / 106.191MiB + +echo "occupied ok: ", occ < 2 * 1024 * 1024 +echo "total ok: ", total < 120 * 1024 * 1024 |