string buffer和string builder
C#中StringBuilder用法以及和String的区别分析?
C#中StringBuilder用法以及和String的区别分析?
StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。
StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。
String是不可变的对象,因此在每次对String类型进行改变的时候,都会生成一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM的GC就会开始工作,性能就会降低。
如何提升Java程序性能?
一个应用系统的性能,涉及到很多方面的因素,性能分析和调优可以写一本书。
您问的是JAVA应用程序,我简单说几句JAVA相关的(数据库性能调优这些就不在这里说了),供你参考。
首要的因素是架构,架构决定性能。如果架构设计有问题,常规的调优手段很难奏效,非得伤筋动骨,大动干戈不可。应用架构设计是个很大的话题,也有很多参考书。
其次,代码细节影响(甚至严重影响)性能。这只能靠自己,基础知识扎实,多积累编程经验,多学习一些工程得最佳实践,代码调优是最常见的解决性能问题的途径,通过基准测试,或者JVM提供的一些分析工具,找到问题,然后改进。
最后,配置影响性能。JAVA是跑在JVM里的,要掌握现代JVM的基本原理,必要的参数设置。JVM性能调优也是一个大课题,比如光是GC一块,就有不少道道。
PS:有时候,增加硬件也是一种(有效的)提升应用性能的方案。但性能并不会与硬件规模呈线性关系, 1加1肯定是小于2的。比如水平扩展,对性能的提升程度,又与软件架构相关。