gpt4 book ai didi

garbage-collection - Clojure 闭包和 GC

转载 作者:行者123 更新时间:2023-12-04 00:57:21 27 4
gpt4 key购买 nike

我的理解是,Java(以及 Clojure)中使用的默认 ClassLoader 持有指向任何创建的匿名类的指针,因此,持有 lambdas 和闭包。这些是 从不 垃圾收集,因此代表“内存泄漏”。有一些针对 Java 7 或 8 ( https://blogs.oracle.com/jrose/entry/anonymous_classes_in_the_vm ) 的调查正在进行,以添加不会保留对这些函数的引用的匿名类加载器。与此同时,人们如何处理使用 Clojure 和 Scala 等鼓励使用这些结构的语言编写长时间运行的应用程序?

Clojure 是否有可能提供自己的匿名类加载器,扩展系统类加载器,但不保留创建的类?

最佳答案

来自 本丁上面的评论以及来自 Michael Fogus 和 Chris Houser 的 The Joy of Clojure 的信息,在“编译时与运行时”一节(第 7 章,第 7.2 节)中,Fogus 和 Houser 解释了闭包和匿名函数在编译时被编译为字节码,每次调用返回闭包的高阶函数,只返回闭包类的一个新实例,而不是一个新类。当然,这些实例将被垃圾收集。由于匿名函数和闭包的数量存在明显的编译时上限,因此内存很少会成为问题,如果有的话。

我的担心是没有根据的。

关于garbage-collection - Clojure 闭包和 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589466/

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