Два языка используют один и тот же стек и кучу на оперативной памяти? - PullRequest
0 голосов
/ 17 апреля 2020

Я читал о распределении памяти в python и мне было интересно, если у меня установлены java и python в той же компьютерной системе, тогда java и python используют один и тот же стек и кучу или они есть разные стеки и кучи, выделенные для них в оперативной памяти?

Может кто-нибудь, пожалуйста, помогите мне прояснить мои сомнения.

Заранее спасибо.

1 Ответ

1 голос
/ 17 апреля 2020

Даже если это деталь реализации, каждый поток в системе имеет свой собственный стек. Куча представляет собой изображение из сегментированной модели 70-х годов и не имеет никакого смысла ни для какого процесса, кроме Java в современной ОС: когда процессу требуется больше памяти, он просто запрашивает его у ядра и не имеет предварительно выделенной кучи. В некотором смысле все процессы в системе (за исключением Java) используют один и тот же доступный пул памяти, но это не то, что называется кучей.

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

...