mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 17:34:43 +00:00
36 lines
882 B
Nim
36 lines
882 B
Nim
discard """
|
|
output: '''Success'''
|
|
"""
|
|
|
|
# bug #3793
|
|
|
|
import os
|
|
import math
|
|
import lists
|
|
import strutils
|
|
|
|
proc mkleak() =
|
|
# allocate 1 MB via linked lists
|
|
let numberOfLists = 100
|
|
for i in countUp(1, numberOfLists):
|
|
var leakList = initDoublyLinkedList[string]()
|
|
let numberOfLeaks = 5000
|
|
for j in countUp(1, numberOfLeaks):
|
|
leakList.append(newString(200))
|
|
|
|
proc mkManyLeaks() =
|
|
for i in 0..0:
|
|
when false: echo getOccupiedMem()
|
|
mkleak()
|
|
when false: echo getOccupiedMem()
|
|
# Force a full collection. This should free all of the
|
|
# lists and bring the memory usage down to a few MB's.
|
|
GC_fullCollect()
|
|
when false: echo getOccupiedMem()
|
|
if getOccupiedMem() > 8 * 200 * 5000 * 2:
|
|
echo GC_getStatistics()
|
|
quit "leaking"
|
|
echo "Success"
|
|
|
|
mkManyLeaks()
|