有没有办法阻止静态变量加载到内存中?
谢谢,
答案 0 :(得分:3)
如果您不需要它们,为什么不将它们删除?
如果你确实需要它们,但只是在很晚的时候,并且它们非常大,以至于优化真的有意义,那就使用延迟初始化。为此,您可以使用Lombok's annotation @Getter(lazy=true)
(实现双重检查惯用法,请参阅Effective Java Item 71)。
答案 1 :(得分:3)
您可以通过不加载类来停止静态变量加载,或者让静态初始化程序抛出异常/错误。无论哪种方式,该课程都无法使用。
如果您有一个已编译的类并且想要更改它的加载方式,您可以对其进行反编译并手动更改它或在运行时使用字节代码操作。第一种选择可能更简单。
答案 2 :(得分:0)
有一个严格的初始化顺序,所以以后不能推迟。
我不知道是否可以从字节码中删除变量以及所需的工作量。