静态成员驻留在内存中的哪个位置,它是永久生成的吗?

时间:2015-03-18 05:30:44

标签: java memory-management static static-members permanent-generation

静态成员他们居住在哪里。 我需要静态,本地和实例成员内存分配(变量,方法)的详细说明。 内存管理(它是永久性的一代)。

2 个答案:

答案 0 :(得分:1)

静态成员:永久生成(堆)

局部变量:堆栈内存不是堆。 请参阅此处http://tutorials.jenkov.com/java-concurrency/java-memory-model.html

答案 1 :(得分:0)

这取决于您使用的Java版本:

  1. Pre Java8:静态(就像其他“永久”事物一样)存储在PermGen中。它只是年轻一代和老一代的记忆模型的一部分。
  2. Java8:这里PermGen被删除了!出于多种原因,例如很难调整它。当然,所有数据都不会被抛弃,因为我们仍然需要它。它刚刚移动到Metaspace,它驻留在本机内存中(因此在Java堆之外)。