gcleak.nim 581 B

12345678910111213141516171819202122232425262728293031
  1. discard """
  2. outputsub: "no leak: "
  3. retries: 2
  4. """
  5. when defined(GC_setMaxPause):
  6. GC_setMaxPause 2_000
  7. type
  8. TTestObj = object of RootObj
  9. x: string
  10. proc makeObj(): TTestObj =
  11. result.x = "Hello"
  12. const numIter =
  13. # see tests/gc/gcleak2.nim
  14. when defined(boehmgc):
  15. 1_000
  16. elif defined(gcMarkAndSweep): 10_000
  17. else: 100_000
  18. for i in 1 .. numIter:
  19. when defined(gcMarkAndSweep) or defined(boehmgc):
  20. GC_fullcollect()
  21. var obj = makeObj()
  22. if getOccupiedMem() > 300_000: quit("still a leak!")
  23. # echo GC_getstatistics()
  24. echo "no leak: ", getOccupiedMem()