最近,我阅读了很多关于 Java 内存分配方案的文章,当我从各种来源阅读这些文章时,我发现有很多疑问。我已经收集了我的概念,我要求通过所有的点和评论他们。我开始知道内存分配是特定于 JVM 的,所以我必须事先说明,我的问题是特定于 Sun 的。
- 类(由类加载器加载)进入堆上的一个特殊区域: 永久生成
- 所有与类相关的信息,比如类的名称、与类相关的对象数组、 JVM 使用的内部对象(比如 java/lang/Object)以及优化信息都进入了永久生成区域。
- All the static member variables are kept on the Permanent Generation area again.
- 对象放在不同的堆上: 年轻一代
- 每个类只有一个方法的副本,无论是静态方法还是非静态方法。那份复印件放在永久一代区域。
对于非静态的方法,所有的参数和局部变量都会进入堆栈——只要对该方法进行具体的调用,我们就会得到一个与之相关联的新堆栈框架。
I am not sure where are the local variables of a static method are stored. Are they on the heap of Permanent Generation ? Or just their reference is stored in the Permanent Generation area, and the actual copy is somewhere else (Where ?)
- I am also unsure where does the return type of a method get stored.
- 如果对象(在年轻一代中)需要使用静态成员(在永久一代中) ,它们被给予静态成员的引用 & & 它们被给予足够的内存空间来存储方法的返回类型,等等。
谢谢你经历了这一切!