LINUX.ORG.RU

История изменений

Исправление tp_for_my_bunghole, (текущая версия) :

да ладно. Три с половиной миллиона GC ?

Да. Только атомы хранятся в отдельном общем пространстве и вообще никогда не подвергаются GC. Сколько создашь, столько их будет в VM всегда, и есть максимально возможное число атомов в виртуальной машине Erlang. Бинарные данные больше определённого размера тоже хранятся в отдельном общем пространстве для виртуальной машины.

А так, у каждого процесса свой GC, что является одной из главных причин почему Erlang хоть медленее некоторых других языков, но держит миллионы соединений при правильной организации взаимодействия легких процессов. Это одно из требований fault tolerance.

Node.js тоже держит миллионы соединений, но не обслуживает их ))) При миллионах соединений, node.js их не закрывает, но в это время в панике работает только GC общая для всей системы, и каждый запрос может обрабатываться 5-10 минут. Зато героически держит. JIT хороший, но он отстраняется от процессора сборщиком мусора.

Хорошие сборщики мусора только у Java(которая «индустриальный стандарт» где программисты расходный материал), Lua(нужно было игровой индустрии), и особенная система управления памятью в Newlisp.

В Mono вроде бы тоже хороший сборщий(sgen) в последних версиях.

Исходная версия tp_for_my_bunghole, :

да ладно. Три с половиной миллиона GC ?

Да. Только атомы хранятся в отдельном общем пространстве и вообще никогда не подвергаются GC. Сколько создашь, столько их будет в VM всегда, и есть максимально возможное число атомов в виртуальной машине Erlang. Бинарные данные больше определённого размера тоже хранятся в отдельном общем пространстве для виртуальной машины.

А так, у каждого процесса свой GC, что является одной из главных причин почему Erlang хоть медленее некоторых других языков, но держит миллионы соединений при правильной организации взаимодействия легких процессов. Это одно из требований fault tolerance.

Node.js тоже держит миллионы соединений, но не обслуживает их ))) При миллионах соединений, node.js их не закрывает, но в это время в панике работает только GC общая для всей системы, и каждый запрос может обрабатываться 5-10 минут. Зато героически держит. JIT хороший, но он отстраняется от процессора сборщиком мусора.

Хорошие сборщики мусора только у Java(везде), Lua(нужно было игровой индустрии), и особенная система управления памятью в Newlisp.

В Mono вроде бы тоже хороший сборщий(sgen) в последних версиях.