不';Clojure是否会占用过多的烫发空间?
我是Cojure的新手,但我了解到在使用AOT编译时,会为每个函数生成一个类。这难道不是意味着大量的类会占用perm gen空间吗?这没有什么问题吗?如果不使用AOT编译,但字节码是动态生成的,那该怎么办?好吧,我认为类是从磁盘还是从内存加载并不重要,wrt PermGen space 但是,请注意,问题可能没有您想象的那么严重:每个函数只编译一次。特别是,您可以在这里或那里看到的“动态”生成的匿名函数只编译一次,每次调用它们只会导致创建这些类的新实例(需要一个实例来存储词汇上下文) 因此,以下代码导致创建两个类(一个用于create fn,一个用于lambda fn),无论运行时创建fn的调用数量如何:不';Clojure是否会占用过多的烫发空间?,clojure,permgen,Clojure,Permgen,我是Cojure的新手,但我了解到在使用AOT编译时,会为每个函数生成一个类。这难道不是意味着大量的类会占用perm gen空间吗?这没有什么问题吗?如果不使用AOT编译,但字节码是动态生成的,那该怎么办?好吧,我认为类是从磁盘还是从内存加载并不重要,wrt PermGen space 但是,请注意,问题可能没有您想象的那么严重:每个函数只编译一次。特别是,您可以在这里或那里看到的“动态”生成的匿名函数只编译一次,每次调用它们只会导致创建这些类的新实例(需要一个实例来存储词汇上下文) 因此,以下
(defn create fn[n](fn lambda fn[x](add nx))
在REPL,类可以被GCed,因为每个REPL交互创建一个新的抛出类加载器来加载新编译的函数。