Я нашел эту статью здесь:
Количественная оценка эффективности сборки мусора против явного управления памятью
http://www.cs.umass.edu/~emery/pubs/gcvsmalloc.pdf
В разделе заключения он гласит:
Сравнение времени выполнения, потребления пространства, и следы виртуальной памяти на диапазон контрольных показателей, мы показываем, что производительность выполнения наиболее эффективный сборщик мусора конкурентоспособность с явной памятью при наличии достаточной памяти. В частности, когда сбор мусора имеет в пять раз больше памяти, чем требуется, его производительность во время выполнения соответствует или немного превышает явное управление памятью. Однако, сбор сборных мусора существенно ухудшается, когда это необходимо используйте меньшие кучи. С тремя раз много памяти, он работает на 17% медленнее средний и в два раза больше памяти, он работает на 70% медленнее. Мусор сбор также более восприимчив к пейджинг, когда физическая память недостаточна. В таких условиях весь мусор сборщики, которые мы рассматриваем здесь, страдают по порядку величины штрафы относительно явной памяти управление.
Итак, если мое понимание верное: если у меня есть приложение, написанное на родном С++, требующее 100 МБ памяти, для достижения такой же производительности с помощью "управляемого" (т.е. сборщика мусора) языка (например, Java, С#), приложение должно требовать 5 * 100 МБ = 500 МБ? (И с 2 * 100 МБ = 200 МБ управляемое приложение будет работать на 70% медленнее, чем собственное приложение?)
Знаете ли вы, что текущие (то есть самые последние Java VM и .NET 4.0) сборщики мусора испытывают те же проблемы, описанные в вышеупомянутой статье? Улучшена ли производительность современных сборщиков мусора?
Спасибо.