2014-11-04 4 views
-1

Я знаю, что распределение памяти - это отображение кода данных в соответствующее место в основной памяти. Но почему отдельная часть для разных данных, например данных стека в java, хранится в области данных класса, динамических (объектных) данных в куче, строковых данных в ConstantPool (через литерал, когда мы делаем), функции в области метода и т. Д. . для распределения памяти только для обеспечения удобства доступа, а также для улучшения нашего кода при хранении в mainmemory?Почему нам нужно распределение памяти в компиляторе

ответ

2

Прежде всего, ваш вопрос должен был быть - Зачем нам нужны разные области хранения в JVM?.

В каждом экземпляре (экземпляре) JVM имеется 5 различных областей хранения.

Shared among all threads running in a JVM instance 
Method Area --> Contains information about classes loaded by the JVM. 
Heap --> common area for allocation of memory. Even String pool is part of this space. 

Separate for each Thread 
Java Stacks --> Contains state of Java (not native level) level methods 
PC registers -> Program counter to keep track of Java method execution. 
Native Method Stacks --> Stack for keeping track/state of native calls (methods). 

Более подробная информация here и here

+0

Нет мой вопрос специфичен для компилятора только (Несколько это связано с Jvm конкретной хранения [Infact каждый язык программирования нужно распределение памяти]). Я знаю немного о том, где данные находится в java, поэтому я упомянул здесь. – Jack

+1

@Jack - Тогда пожалуйста * уточните/уточните * свой вопрос – TheLostMind

+0

, когда компилятор компилирует наш код, он загружает наш код в основную память, а затем хранит различные данные нашей программы в отдельной области памяти нашей основной памяти. Почему компиляторы должны хранить этот данные в отдельных областях. Из 2-х причин достаточно простого доступа к коду и отдельных порций для более чистого использования. Код – Jack

Смежные вопросы