为什么我们需要编译器中的存储分配

时间:2014-11-04 05:34:54

标签: java compiler-construction

我知道存储分配是将数据代码映射到主存储器中的适当位置。 但是为什么java中的堆栈数据的不同数据的单独部分存储在classInformation区域,堆中的动态(对象)数据,ConstantPool中的String数据(当我们制作时通过文字),方法区域中的函数等 那么存储分配的需求是否只是为了提供易于访问以及在mainmemory中存储时使代码更清晰?

1 个答案:

答案 0 :(得分: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).

更多信息herehere