我是Cojure的新手,但我读到在使用AOT编译时会为每个函数生成一个类.这是不是意味着很多消耗了perm-gen空间的类?这有什么问题吗?什么时候不使用AOT编译,但是动态生成字节码?
Lau*_*tit 11
好吧,我认为无论是从磁盘还是从内存加载类都无关紧要,这与PermGen空间有关.
但是,请注意问题可能没有您想象的那么糟糕:每个函数都编译一次.特别是,你可以在这里或那里看到的"动态"生成的匿名函数只编译一次,每次调用它们只会导致创建这些类的新实例(需要一个实例来存储词法上下文) .
所以下面的代码导致创建两个类(一个用于create-fn,一个用于lambda-fn),无论create-fn的调用次数是多少?
(defn create-fn [n] (fn lambda-fn [x] (add n x)))