2014-11-04 32 views
-1

我知道存储分配是将数据代码映射到主内存中的适当位置。 但为什么java中的例子堆栈数据的不同数据的单独部分存储在classInformation区域中,堆中的动态(对象)数据,ConstantPool中的字符串数据(通过文字制作时),方法区域中的函数等 因此需要存储分配只是为了提供便于访问以及在存储在主存储器中时使我们的代码更清洁?为什么我们需要在编译器中分配存储空间

回答

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

+0

没有我的问题是特定于编译器只(有点它JVM特定存储相关[INFACT每种编程语言需要存储分配])。我了解一些其中数据驻留在Java中,所以我在这里提到。 – Jack 2014-11-04 06:09:52

+1

@Jack - 然后当编译器编译我们的代码时,请详细说明/澄清*您的问题 – TheLostMind 2014-11-04 06:11:25

+0

它将我们的代码加载到主存储器中,然后将我们程序的各种数据存储在我们主存储器的单独内存区域中?那么为什么编译器需要存储数据在独立的区域。有足够容易访问代码和分离部分的两个原因以实现更高效清洁代码 – Jack 2014-11-04 06:16:25

相关问题