核心Java静态变量加载

时间:2011-09-08 12:39:31

标签: java

有没有办法阻止静态变量加载到内存中?

谢谢,

3 个答案:

答案 0 :(得分:3)

如果您不需要它们,为什么不将它们删除?

如果你确实需要它们,但只是在很晚的时候,并且它们非常大,以至于优化真的有意义,那就使用延迟初始化。为此,您可以使用Lombok's annotation @Getter(lazy=true)(实现双重检查惯用法,请参阅Effective Java Item 71)。

答案 1 :(得分:3)

您可以通过不加载类来停止静态变量加载,或者让静态初始化程序抛出异常/错误。无论哪种方式,该课程都无法使用。

如果您有一个已编译的类并且想要更改它的加载方式,您可以对其进行反编译并手动更改它或在运行时使用字节代码操作。第一种选择可能更简单。

答案 2 :(得分:0)

有一个严格的初始化顺序,所以以后不能推迟。

我不知道是否可以从字节码中删除变量以及所需的工作量。