gpt4 book ai didi

clojure - 如果在运行时替换函数,Clojure/JVM 是否会 GC 旧代码?

转载 作者:行者123 更新时间:2023-12-04 00:52:32 24 4
gpt4 key购买 nike

如果您经常在运行时替换函数,the way this poster wanted to do为了的目的, Clojure/JVM GC 旧代码吗?

最佳答案

如有疑问,请询问计算机!我写了一个快速测试:

(ns tst.demo.core
(:use demo.core tupelo.core tupelo.test))

(defn create-fn
[n]
(let [fname (symbol (format "add-%d" n))
body (vector '[x] (list '+ n 'x))
fn-form (apply list 'clojure.core/defn fname body)
fn-ref (eval fn-form)]
fn-ref))

(defn create-and-call-fn
[n]
(let [fn-ref (create-fn n)
fn-result (fn-ref 3)]
(when-not (= (+ 3 n) fn-result)
(throw (ex-info "bad result" (vals->map n fn-result))))))


(dotest
(let [f5 (create-fn 5)
f5-result (f5 3)]
(is= 8 f5-result))
(dotimes [i 99999]
(when (zero? (mod i 100)) (spyx i))
(create-and-call-fn i)))

在创建多达 10 万个函数后,它仍然有效。 YMMV!


以上是根据this template project .

关于clojure - 如果在运行时替换函数,Clojure/JVM 是否会 GC 旧代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65397242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com