首页 / 知识
关于设计模式:Java Singleton与静态-具有真正的性能优势吗?
2023-04-13 05:58:00

Java Singleton vs static - is there a real performance benefit?我正在合并一个CVS分支,其中最大的变化之一是用具有静态初始化块和所有静态方法的抽象类替换Singleton模式发生的任何地方。 这是值得保留的东西,因为它将需要合并很多冲突,对于这种重构我值得考虑的情况是什么? 我们正在Weblogic 8.1(因此是JDK 1.4.2)下运行此应用程序。 对不起,托马斯,让我澄清一下.. HEAD版本具有传统的单例模式(私有构造函数,getInstance()等) 分支版本没有构造函数,是\\'公共抽象类\\',并将对象上的所有方法修改为\\'static \\'。过去在私有构造函数中存在的代码被移到静态块中。 然后更改该类的所有用法,这会导致合并中出现多个冲突。 在某些情况下会进行此更改。 如果需要存储任何状态,我将使用单例,否则将使用静态类。实例化某个东西,即使是单个实例,也没有意义,除非它需要存储一些东西。 从严格的运行时性能angular来看,差异实际上可以忽略不计。两者之间的主要区别在于"静态"生命周期链接到类加载器,而对于单例来说,它是常规实例生命周期。通常最好还是远离ClassLoader业务,这样可以避免一些棘手的问题,尤其是当您尝试重新加载Web应用程序时。 静态对扩展性不利,因为静态方法和字段不能被子类扩展或覆盖。 对于单元测试也很不利。在单元测试中,由于无法控制类加载器,因此无法避免其他测试的副作用蔓延。在一个单元测试中初始化的静态字段将在另一个单元测试中可见,或者更糟的是,同时运行测试将产生不可预测的结果。 当少量使用时,Singleton通常是可以的。我更喜欢使用DI框架,并让它为我管理实例(可能在Guice中的不同范围内)。 根据我的经验,唯一重要的是在单元测试中哪个更容易模拟。我一直觉得Singleton更容易和自然地嘲笑出来。如果您的组织允许您使用JMockit,则没关系,因为您可以克服这些问题。 如果我的原始帖子是正确的理解,并且Sun所链接的讨论是准确的(我认为可能是正确的),那么我认为您必须在清晰度和性能之间进行权衡。 问自己以下问题: 编写一些代码来衡量性能。答案将取决于JVM(Sun的JDK的性能可能不同于JRockit)以及VM标记您的应用程序使用的。 此讨论有帮助吗? (我不知道链接到另一个编程论坛是否是忌讳的,但我宁愿不只是引用整个讨论=)) Sun关于此主题的讨论 该裁决似乎是,尽管从技术上讲静态方法更有效,但在大多数情况下它并没有太大的区别。 |
最新内容
相关内容
python有哪些设计模式?
python有哪些设计模式?,设计,策略,工厂,系统,代码,统一,培训,模式,软件,通信,设计模式大家一定很熟悉,它是一套被反复使用、多数人知晓的、经过python静态方法怎么使用self
python静态方法怎么使用self,培训,管理,不了,方法,静态,属性,实例,变量,对象,参数,python-静态方法,类方法,属性方法静态方法实际上与类(或者实关于C#:DateTime.Now是测量函数性能
关于C#:DateTime.Now是测量函数性能的最佳方法吗?,关于C#:DateTime.Now是测量函数性能的最佳方法吗?,代码片段,瓶颈,测量,性能,Is DateTi关于性能:你最喜欢的剖析工具(C++)
关于性能:你最喜欢的剖析工具(C++),关于性能:你最喜欢的剖析工具(C++),量化,英特尔,检测,我只,What's your favorite profiling toolC ++中的i ++和++ i之间是否存在性
C ++中的i ++和++ i之间是否存在性能差异?,C ++中的i ++和++ i之间是否存在性能差异?,性能,是否存在,不理,差异,Is there a performanc关于性能:在高负载站点中使用PHP的
关于性能:在高负载站点中使用PHP的策略,关于性能:在高负载站点中使用PHP的策略,服务器,流行,负载,把我,Tactics for using PHP in a hi在git中切换分支名称
在git中切换分支名称,在git中切换分支名称,描述,方法,暂停,工作,Switch branch names in git提出这个问题的方法可能不只一种,所以这关于Java:为什么我不能在接口中声明
关于Java:为什么我不能在接口中声明静态方法?,关于Java:为什么我不能在接口中声明静态方法?,声明,静态方法,接口,这一,Why can't I decl关于sql:最喜欢的性能调整技巧
关于sql:最喜欢的性能调整技巧,关于sql:最喜欢的性能调整技巧,查询,优化技巧,存储过程,性能,Favourite performance tuning tricks当您关于性能:Hadoop的经验?
关于性能:Hadoop的经验?,关于性能:Hadoop的经验?,体系结构,文件系统,我也,分布式,Experience with Hadoop?你们有没有尝试过Hadoop? 在无关于性能:为(字符串)哈希函数选择乘
关于性能:为(字符串)哈希函数选择乘数,关于性能:为(字符串)哈希函数选择乘数,函数,计算,用于,乘法器,Choosing a multiplier for a (st识别SQL Server性能问题
识别SQL Server性能问题,识别SQL Server性能问题,应用程序,超时,群集,查询,Identifying SQL Server Performance Problems我们的SQL