Компания, в которой я работаю, имеет совершенно разные точки зрения относительно платформы разработки JVM.Накладные расходы, если GC для памяти в JVM vs Swift style ARC
На основании этой статьи здесь - http://people.cs.umass.edu/~emery/pubs/gcvsmalloc.pdf
Они говорят, что оракул требует JVM 3-5x памяти overheead т.е. работать с 1 Гб JVM мы требуем 3-5 Гб оперативной памяти дополнительно, чтобы противодействовать служебную виртуальную машину Java и Быстрый стиль ARC - это ответ на вопросы GC.
Я сделал несколько аргументов противников о том, что они не проводили исследование на базе Oracle/Sun JVM, и некоторые экспериментальные VM и ARC имеют свои собственные проблемы, такие как круговые ссылки.
Проведено ли какое-либо исследование о том, что именно/приблизительно является накладными расходами GC для памяти в JVM, я не смог найти.
Мои вопросы кратко
1) Есть никаких видимых накладных расходов для GC. Причина, по которой объем оперативной памяти в 3-5 раз кажется действительно необоснованным, если факт верен.
Кроме того, большие приложения данных, такие как Apache spark, hbase, cassandra, работают в масштабе памяти терабайта/петабайта. Если в GC есть такие накладные расходы, почему они будут развиваться на такой платформе?
2) ARC считается уступающим другим алгоритмам трассировки GC. Если это так, было бы также полезно, если бы были какие-либо документы, непосредственно сравнивающие эффекты времени компиляции ARC malloc/free vs JVM GC runtime cleanup
Существует требование Криса Лэттнера, в котором говорится, что GC потребляет 3-5-кратную память здесь - https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160208/009422.html
Я думаю, что вы путаете пространство оперативной памяти и дисковое пространство, заявляя, что * «Исход Apache, hbase, cassandra работают в терабайте/петабайте» *. – Andreas
Хорошо искры работает в основном в памяти. Нет, я не смутился, я просто говорю, что память важна для таких больших приложений с данными. –
Приложения данных могут работать с объемом менее 1 ГБ и все еще обрабатывать 1 петабайт данных. Вы спрашиваете об использовании ОЗУ на одном сервере (GC в JVM), поэтому упоминание * petabyte * определенно заставляет его звучать так, как будто вы путаете проблему. – Andreas