fix another way that `racket/gui' instances can leak
original commit: 745c4b64703cf5fb47e44781b1aac6af41e04fd8
This commit is contained in:
parent
13219382f5
commit
3d08118a1d
|
@ -2,17 +2,22 @@
|
||||||
|
|
||||||
;; Check for a leak via multiple `racket/draw' instantiations.
|
;; Check for a leak via multiple `racket/draw' instantiations.
|
||||||
|
|
||||||
(define-values (incs m)
|
(define my-ns-channel (make-parameter #f))
|
||||||
(for/fold ([incs 0] [prev-mem 0]) ([i 10])
|
|
||||||
(parameterize ([current-namespace (make-base-namespace)])
|
(define-values (incs m ns)
|
||||||
|
(for/fold ([incs 0] [max-mem 0] [ns #f]) ([i 10])
|
||||||
|
(define ns (make-base-namespace))
|
||||||
|
(parameterize ([current-namespace ns]
|
||||||
|
[my-ns-channel ns])
|
||||||
(dynamic-require 'racket/draw #f))
|
(dynamic-require 'racket/draw #f))
|
||||||
(collect-garbage)
|
(collect-garbage)
|
||||||
(sync (system-idle-evt))
|
(sync (system-idle-evt))
|
||||||
(collect-garbage)
|
(collect-garbage)
|
||||||
(let ([m (current-memory-use)])
|
(let ([m (current-memory-use)])
|
||||||
(if (m . > . (+ prev-mem (* 100 1024)))
|
(printf "~s\n" m)
|
||||||
(values (add1 incs) m)
|
(if (m . > . max-mem)
|
||||||
(values incs m)))))
|
(values (add1 incs) m 'ns)
|
||||||
|
(values incs max-mem 'ns)))))
|
||||||
|
|
||||||
(unless (incs . < . 5)
|
(unless (incs . < . 5)
|
||||||
(error "multiple `racket/draw' instantiations seem to accumulate memory"))
|
(error "multiple `racket/draw' instantiations seem to accumulate memory"))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user