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