关闭

Java性能优化的5个技巧

标签: java性能优化jvm最小堆outofmemoryerror
2876人阅读 评论(11) 收藏 举报
分类:

Java性能优化的5个技巧

  • 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。

要优化Java代码需要正确的分析它的工作机制,影响性能优化有几个因素,比如垃圾收集、操作系统的设置、虚拟机的设置等。

1. 从最小堆分配开始

推荐从最小堆分配开始。然后根据应用程序的实际需要来逐渐增加最小堆,可以通过下面的指令来指示JVM在发生OutOfMemoryError异常时倾倒堆数据:

-XX:+HeapDumpOnOutOfMemoryError

对可用内存的适当利用是优化应用速度的好办法。

一开始时,堆尺寸保持在1GB~7GB之间就足以了。然后取决于老一代和新生代对象的比例进行调整。

2. 使用Java性能工具

业界有几个Java性能工具,比如VisualVM、YourKit、Java Mission Control等,可用于跟踪应用程序的性能。

NetBeans开发工具的Profiler也是一个很好的选择。

3. 使用StringBuilder代替“+”操作符

对于字符串的操作,其中如果用到了“+”操作符,那么应该改用StringBuilder代替。比如上面的代码。

这样使得字符串值修改更容易,而且不会对垃圾收集器GC造成额外的压力。

StringBuilder x = new StringBuilder("a");
x.append(args.length);
x.append("b");
if (args.length == 1);
x.append(args[0]);

4. 避免使用迭代器

如果代码像这样:

for (String value: strings) {
 // Do something useful here
}

那么在每次运行这个代码时,都会创建一个新的迭代器实例,而这会消耗大量的内存。

故建议使用下面的代码:

int size = strings.size();
for (int i = 0; i < size; i++) {
 String value: strings.get(i);
 // Do something useful here
}

如果实际的列表对象不需要真正发生改变,那么还可以在其阵列版本上操作,比如:

for (String value: stringArray) {
 // Do something useful here
}

编写基于索引的迭代非常有用。

5. 具有更好的并行控制

并行是把多个应用程序以彼此并行的方式运行。为了解决多请求的Web流,推荐使用带乐观锁的分离实体或扩展的持久上下文。

此外,了解关系数据库管理系统RDBMS和数据访问框架的内部机制对提高数据访问层的性能至关重要。

6
3
查看评论

JAVA性能优化权威指南 读书笔记四

HotSpot JIT编译器 简介   编译指的是从编程完成的代码转化到机器能够是使用的机器码的过程,在这个过程中开发人员可能需要等待很长一段时间才能得到最终可以运行的软件。JAVA采用了另外一种角度来解决这个问题,由于JAVA是基于JVM虚拟机的一种语言,这就使得java可以将编译的...
  • sunsun314
  • sunsun314
  • 2016-12-04 13:45
  • 390

大话java性能调优读书笔记

序:最大的思想紊乱是相信人们想要相信的事情. 1 调优方法, 调优方向 调优层次 2导致系统瓶颈的计算资源:cpu、内存,磁盘IO, 网络传送,数据库,锁竞争,异常等 磁盘IO读写速度比内存慢很多,由于网络的不确定性,可能网络的操作速度比磁盘I/O更慢 数据库中的连接数量,读写速度,数据合并...
  • sinat_29581293
  • sinat_29581293
  • 2017-03-28 20:34
  • 2485

《大话Java性能优化》面向对象及基础类型相关部分

Java语言里面的所有类都默认继承自java.lang.Object类,在java.lang.Object类里面有一个clone()方法,JDK API的说明文档里面解释了这个方法会返回Object对象的一个拷贝。我们需要说明两点:一是拷贝对象返回的是一个新对象,而不是一个对象的引用地址;二是拷贝对...
  • zmycoco2
  • zmycoco2
  • 2016-08-28 16:56
  • 839

软件一定存在修改的余地——《大话Java性能优化》

程序凑合着上线是一回事,而在压力下运行并可以维护下去就是另一回事了。《大话Java性能优化》就是一本让人学会优化Java代码性能的书,书中详细介绍了API调用、算法和设计模式、多线程、垃圾回收等各方面的性能优化方案和性能测试方法,除了第二章完全基于JavaEE外其他章节都是Android开发中性能问...
  • dongfeng9ge
  • dongfeng9ge
  • 2016-05-15 21:21
  • 3759

JAVA性能优化权威指南 读书笔记(一)

JAVA性能优化权威指南 读书笔记   最近也算是比较认真的读了一下java性能优化权威指南,期间断断续续持续了大概一个半月,深感自己读书的效率和积极性还是存在问题,总之,在此我还是先记录一下相关的收获和感悟。其中书本中相对比较模糊的概念我在这里不进行太过详细的阐述,只有部分明确的概念会...
  • sunsun314
  • sunsun314
  • 2016-11-27 21:27
  • 1593

java性能优化常用技巧

一、避免在循环条件中使用复杂表达式  在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。  例子:  [java] view plain copy print? ...
  • zmx729618
  • zmx729618
  • 2016-04-18 09:47
  • 215

js调试的5个技巧

转载:http://www.jb51.net/article/47812.htm 1. debugger; 我以前也说过,你可以在JavaScript代码中加入一句debugger;来手工造成一个断点效果。 需要带有条件的断点吗?你只需要用if语句包围它: if (somet...
  • sunlijie1118
  • sunlijie1118
  • 2017-12-17 10:22
  • 74

JAVA程序性能优化-让你的java程序更快、更稳定学习笔记一性能优化一般步骤

《JAVA程序性能优化-让你的java程序更快、更稳定》学习笔记一性能优化一般步骤
  • aovenus
  • aovenus
  • 2014-01-06 15:36
  • 1107

10年Java开发大神总结代码性能优化

代码优化,可能说起来一些人觉得没用,但笔者觉得应该平时开发过程中,就尽量要求自己,养成良好习惯,一个个小的优化点,积攒起来绝对是有大幅度效率提升的。好了,下面千锋教育小编将总结的知识点分享给大家。 代码优化的目标: 1.减小代码体积 2.提高整个系统的运行效率 代码细节优化   ...
  • wocong6078
  • wocong6078
  • 2017-07-28 20:46
  • 200

JAVA性能优化权威指南 读书笔记五

Java应用分析技巧 1性能优化机会 大多数的java性能优化都集中于以下几类: 1更高效的算法 2减少锁争用 3为算法生成更有效的代码   2系统或内核态CPU的使用   在理想状态下应用的使用系统态CPU应该是0%,但是对于大多数存在I/O调用需要的应用来说这...
  • sunsun314
  • sunsun314
  • 2016-12-08 21:36
  • 641
    个人资料
    • 访问:5973671次
    • 积分:52235
    • 等级:
    • 排名:第64名
    • 原创:797篇
    • 转载:23篇
    • 译文:24篇
    • 评论:1190条
    一名路过的黑客

    大家好,我是黑客,专门盗账号的。现在这个人的帐号被我盗了,但看这个人平时的博客空间,一直过着艰苦努力、持之以恒的技术研究生活,勤奋刻苦,积极分享,无私奉献,我被深深的感动了,这是一个纯粹的人,人品这样的高尚,希望大家看到我这条消息后,可以私聊他,多鼓励他,不缺钱的就多给他一些经济上的资助,让他再接再厉!就这样吧,我下线了,眼框湿湿的难受。

    文章存档