JVM нужна непрерывная область памяти для кучи.Это означает, что он выделяет максимальный размер виртуальной памяти при запуске.Это не так плохо, как звучит, поскольку ОС выделяет основную память только приложению, как оно ее использует (а не когда выделяет виртуальную память)
Если посмотреть на объем памяти, используемый в таком инструменте, какVisualVM, вы можете обнаружить, что даже с объемом служебной информации 150 - 500 МБ, размер меньше, чем минимальный размер.Это связано с тем, что Java не просто использует минимальный размер, если она не используется для него.
Вместо этого минимальный размер - это точка, ниже которой он предпринимает лишь незначительные попытки очистки памяти.(Вы можете видеть, что он выполняет незначительные сборы мусора) В большинстве случаев это означает, что приложение будет использовать минимальный размер очень быстро.Тем не менее, программа "hello world" не будет использовать минимальный размер.
возможно, windows не позволяет иметь столько памяти для запуска с
Сбой JVMначать, если он не может выделить максимальный размер как непрерывный блок.(Это было распространенной проблемой в 32-битном окне, так что ограничение могло составлять 1,5 ГБ или всего 1,2 ГБ)