【发布时间】:2011-02-17 16:00:58
【问题描述】:
如果我有一个带有巨大方法f() 的对象O,并且我将10000 个O 的示例加载到内存中。 f() 的 10000 个示例是否也加载到内存中?如果是这样,这是否意味着如果可能我会通过将此函数设为静态来节省内存?
【问题讨论】:
标签: java memory memory-management static
如果我有一个带有巨大方法f() 的对象O,并且我将10000 个O 的示例加载到内存中。 f() 的 10000 个示例是否也加载到内存中?如果是这样,这是否意味着如果可能我会通过将此函数设为静态来节省内存?
【问题讨论】:
标签: java memory memory-management static
实例方法被加载到 JVM 的方法区。它被加载一次,但是每次调用 f() 都会有很多堆栈,以跟踪自己的局部变量值。
【讨论】:
没有。该方法只加载了一个实例。
【讨论】:
实例方法只是一个模板,并在一个类中定义(不是在每个实例中)。将其设为静态不会节省内存。
【讨论】:
没有。方法不是实例的一部分;他们是班级的一部分。为每个实例重复代码是没有意义的(因为它永远不会改变),所以很简单,实现比这更智能。
【讨论】: