关于Scala中的一等函数,在Scala的Programming一书中有写:
函数文字被编译成一个类,在运行时实例化时是一个函数值。
当一个程序中会使用很多一流的函数时,这会影响JVM的PermGen空间吗?因为编译器不是为简单函数生成类,而是为函数值的每个变体生成类(例如,在部分应用函数的不同定义的情况下)。
关于Scala中的一等函数,在Scala的Programming一书中有写:
函数文字被编译成一个类,在运行时实例化时是一个函数值。
当一个程序中会使用很多一流的函数时,这会影响JVM的PermGen空间吗?因为编译器不是为简单函数生成类,而是为函数值的每个变体生成类(例如,在部分应用函数的不同定义的情况下)。
内存配置文件肯定会与普通 Java 程序不同,尽管您几乎可以调整 JVM 上的任何内存参数。
然而,我只能说,在深入参与 Scala 社区的一年中,我从未见过有人对此抱怨。
我没有证据证明这一点,但我的感觉是,如果您正在编写任何重要的程序,那么程序的“真实”数据占用的空间量将大大超过少数程序占用的空间量额外的函数类定义。
换句话说,我不会担心它。
一个经过验证的数学事实是,您使用一等函数生成的类的数量将能够渐近接近但永远不会超过完整 Spring 发行版中编译的类的数量。不用担心,那些先驱会首先处理 permgen 问题!