diff options
author | Araq <rumpf_a@web.de> | 2013-02-10 15:06:25 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-02-10 15:06:25 +0100 |
commit | 3d7abb958de10df1fd630a24c01b5e259318b9c1 (patch) | |
tree | bda52b3073fe13ac58d314a7db4582dd326fee38 /tests/gc | |
parent | 0bb373142248f73dfdfc7e1112a4a2685b330136 (diff) | |
download | Nim-3d7abb958de10df1fd630a24c01b5e259318b9c1.tar.gz |
open arrays documented in the manual
Diffstat (limited to 'tests/gc')
-rw-r--r-- | tests/gc/cycleleak.nim | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/tests/gc/cycleleak.nim b/tests/gc/cycleleak.nim index 0153d0f72..9f5c30ebd 100644 --- a/tests/gc/cycleleak.nim +++ b/tests/gc/cycleleak.nim @@ -5,37 +5,51 @@ discard """ type Module = object nodes*: seq[PNode] + id: int PModule = ref Module Node = object owner*: PModule data*: array[0..200, char] # some fat to drain memory faster + id: int PNode = ref Node +var + gid: int + +when false: + proc finalizeNode(x: PNode) = + echo "node id: ", x.id + proc finalizeModule(x: PModule) = + echo "module id: ", x.id + proc newNode(owner: PModule): PNode = new(result) result.owner = owner + inc gid + result.id = gid proc compileModule: PModule = new(result) result.nodes = @[] for i in 0..100: result.nodes.add newNode(result) + inc gid + result.id = gid var gModuleCache: PModule proc loop = - for i in 0..10000: + for i in 0..1000: gModuleCache = compileModule() gModuleCache = nil GC_fullCollect() - if getOccupiedMem() > 900_000: + if getOccupiedMem() > 9_000_000: echo "still a leak! ", getOccupiedMem() quit(1) - echo "no leak: ", getOccupiedMem() loop() |