Java Singleton vs static - 是否有真正的性能优势?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我正在合并一个CVS分支,其中一个更大的变化就是在具有静态初始化块和所有静态方法的抽象类的Singleton模式中出现的替换。

这是值得保留的东西,因为它需要合并很多冲突,我会考虑这种重构是值得的吗?

我们在Weblogic 8.1下运行这个应用程序(所以JDK 1.4.2)

对不起托马斯,让我澄清一下..

HEAD版本具有传统的单例模式(私有构造函数,getInstance()等)

分支版本没有构造函数,是一个'公共抽象类',并将对象上的所有方法修改为'static'。过去存在于私有构造函数中的代码被移入一个静态块中。

然后改变这个类的所有用法,这会导致合并中的多重冲突。

有一些情况下进行了这种更改。

提问于
用户回答回答于

从严格的运行时性能角度来看,差异是微不足道的。两者之间的主要区别在于“静态”生命周期与类加载器相关联,而单例则是常规实例生命周期。通常最好远离ClassLoader业务,避免一些棘手的问题,特别是当您尝试重新加载Web应用程序时。

用户回答回答于

如果需要存储任何状态,我将使用单例,否则使用静态类。没有必要实例化一些东西,甚至是单个实例,除非需要存储某些东西。

扫码关注云+社区