【发布时间】:2025-12-08 07:15:02
【问题描述】:
我已经阅读了一些关于这个主题的帖子:
- How are instance methods stored
- static allocation in java - heap, stack and permanent generation
- where is a static method and a static variable stored in java. In heap or in stack memory
但我对他们所说明的概念感到困惑:
静态方法(实际上是所有方法)和静态变量都存储在堆的 PermGen 部分中,因为它们是反射数据的一部分(与类相关的数据,而不是与实例相关的数据)。
因此,无论static 与否,方法都只会在类的堆上存储一份副本。既然类中只有一个副本,我解释为所有方法都属于该类,那为什么Java只能使用实例化的实例调用非静态方法呢?
为什么我们会有非静态方法属于实例而不属于类的概念?
【问题讨论】:
标签: java static heap-memory permgen