Могут ли первоклассные функции в Scala заботиться о выделении большого пространства PermGen в JVM? - PullRequest
4 голосов
/ 04 декабря 2009

Что касается первоклассных функций в Scala, это написано в книге Программирование в Scala:

Функциональный литерал компилируется в класс, который при создании экземпляра в время выполнения является значением функции.

Когда в программе будет использоваться много первоклассных функций, повлияет ли это на пространство PermGen в JVM? потому что вместо простых функций компилятор генерирует классы для каждого изменения значения функции (например, в случае различных определений частично примененных функций).

Ответы [ 3 ]

3 голосов
/ 04 декабря 2009

Профиль памяти, безусловно, будет отличаться от профиля обычных программ на Java, хотя вы можете настроить практически любой параметр памяти в JVM.

Все, что я могу сказать, это то, что за один год активного участия в сообществе Scala я никогда не видел, чтобы кто-то жаловался на это.

2 голосов
/ 04 декабря 2009

У меня нет никаких оснований для этого, но я чувствую, что если вы пишете какую-то нетривиальную программу, объем пространства, занимаемого «реальными» данными вашей программы, значительно превзойдет объем занимаемого пространства. несколькими дополнительными определениями функций как классов.

Другими словами, я бы об этом не беспокоился.

1 голос
/ 04 декабря 2009

Это доказанный математический факт, что число классов, которые вы генерируете с помощью функций первого класса, сможет асимптотически приближаться, но никогда не будет превышать количество скомпилированных классов в полном выпуске Spring. Не волнуйтесь, эти первопроходцы первыми займутся вопросами пермгена!

...