Любой эффект MaxDirectMemorySize и sun.misc.unsafe - PullRequest
0 голосов
/ 18 ноября 2018

Теперь этот вопрос возникает в основном из-за моего неправильного понимания родной памяти в JVM и, вероятно, также глупо.Так что хорошая простая для понимания документация в этом направлении была бы хороша.

Теперь я теперь, когда класс sun.misc.unsafe никогда не рекомендуется, и само слово «unsafe» подразумевает.Я также понимаю, что это устарело.

Насколько я понимаю, MaxDirectMemorySize должен ограничивать собственный объем памяти, к которому могут обращаться ложные реализации NIO или байтовые буферы.Так применяется ли этот предел размера памяти к областям памяти, которые создаются классом Unsafe?

Кроме того, почему этот вопрос заключается в том, что рост стека потоков является собственной памятью, которая не контролируется JVM.Существуют ли иные способы в Java-коде, чтобы можно было наращивать такую ​​собственную память, которая не находится в руках или под контролем виртуальной машины.

Это некоторые размышления, которые я имею для большего понимания JVMэто все.

1 Ответ

0 голосов
/ 18 ноября 2018

Максимум применяется путем ведения подсчета того, сколько используется, и сравнения с максимальным объемом памяти. Вы можете найти, как этот параметр используется в коде JVM.

Если только вы не сделаете этого, максимум не будет, если вас заставят.

Рост стека потоков - это собственная память, которая не контролируется JVM.

JVM не реализует это ограничение, поскольку оно выполняется ОС. JVM просто устанавливает его при создании стека. C.F. -Xss

Важно понимать, что JVM - это программа на Си. Он не делает ничего волшебного и под покровом делает то же самое, что и программа на Си.

...