Вероятно, это связано с тем, что в Java есть сборщик мусора, а в C и C ++ нет.
Rufflewind
0
@Rufflewind что-то, что ... но почему вы должны ограничить это? почему просто нет, пусть это взорвет память
user2709465
3
Куча C / C ++ имеет предел. Предел установленной памяти / доступной виртуальной памяти. Что наступит раньше. У Java есть более интересный предел из-за GC, но он растет по мере необходимости до нехватки памяти. Как и любая другая программа.
Smith_61
0
а, значит, этот предел и аргументы для его увеличения предназначены для GC? теперь это имеет смысл
user2709465
3
Java VM "безопасна". Это создает песочницу для программы. Поэтому, когда вы запускаете VM, вы можете определить максимальные пределы для пространства (параметры Xmx и Xms). Это не позволит серверу выделять слишком много места и разрушит виртуальную машину, а не весь сервер. Например, веб-сервер Erlang съест всю память при необходимости и может повесить компьютер, что приведет к перезагрузке, а JMV - нет, поэтому вы можете легко перезапустить его с помощью скрипта.
сначала у вас есть минимальный размер кучи, который существует для предотвращения медленного запуска
максимальный размер кучи существует, так что GC знает, когда начать выполнять эту работу, без него было бы намного сложнее (но выполнимо, вам просто нужно было бы учитывать различные эвристики, такие как количество распределений и т.д.),
максимальный размер кучи также мешает JVM забивать все ресурсы на машине, что может быть очень хорошей вещью