JVM 如何为方法管理内存?
How JVM manages memory for methods?
例如,我们有一个 MyClass
的实例,它包含 1 个方法。这个方法应该保存在内存中。当 MyClass
的这个实例被 GC 处理时,对这个方法的引用是否也被删除了?我想通过依赖注入弄清楚天气(因此创建每个 class 的新实例)需要更少的内存和更高效或简单的 Helper
classes 与一堆静态方法是还是不错的
一个对象的实例方法存储在它的 class 对象中(应该只存在一个副本),它们不会随每个新实例“复制”,相反,在引擎盖下每个实例都有一个引用驻留在 class 对象中的方法实现。
实例是垃圾收集的,而不是 class 数据。 class 数据存储在 permgen space 或 metaspace 中,具体取决于 java 版本。
垃圾收集器专门在创建实例的堆上工作,而不是在 permgen 或 metaspace.
上工作
例如,我们有一个 MyClass
的实例,它包含 1 个方法。这个方法应该保存在内存中。当 MyClass
的这个实例被 GC 处理时,对这个方法的引用是否也被删除了?我想通过依赖注入弄清楚天气(因此创建每个 class 的新实例)需要更少的内存和更高效或简单的 Helper
classes 与一堆静态方法是还是不错的
一个对象的实例方法存储在它的 class 对象中(应该只存在一个副本),它们不会随每个新实例“复制”,相反,在引擎盖下每个实例都有一个引用驻留在 class 对象中的方法实现。 实例是垃圾收集的,而不是 class 数据。 class 数据存储在 permgen space 或 metaspace 中,具体取决于 java 版本。 垃圾收集器专门在创建实例的堆上工作,而不是在 permgen 或 metaspace.
上工作