1.   尽量指定类的final修饰符

带有final修饰符的类是不可派生的。指定一个类为final,则该类所有方法都是final。Java编译器会会找机会内联所有否final方法,这样能够使性能平均提高50%.

2.尽量重用对象。

特别是String对象的使用中,出现字符串链接情况时应用StringBuffer代替。

3.尽量使用局部变量。

调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中,速度较快。其他变量买入静态变量、实例变量等,都在堆中创建,速度较慢。另外,依赖于具体的编译器/jvm,局部便利还可能得到进一步的优化。

4.不要重复初始化变量。

5.在进行数据库连接,I/O流操作是,记住务必在使用完后关闭连接,释放资源。

因为这些大对象的操作会造成系统大的开销。

6.在使用同步机制时,应尽量使用方法同步代替代码块同步。

7.慎用异常,

异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace的本地方法,fillInStackTrace()方法检查堆栈,手机调用跟踪信息。只要有异常被抛出,VM就必须调用对堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。

8.尽量不要在循环中使用try{}catch{}

可以在循环外部使用try,,catch包裹。

9.在StringBuffer时,应初始化StringBuffer的容量。这样可以明显提升性能。

10.当复制大龄数据时,使用System.arraycopy()

11.不用new关键词创建类的实例。

用new关键字创建类 的实例时,构造函数链中的所有构造函数都会别自动调用。按如果一个对象实现了Cloneable接口,我们就可以用它的clone方法,clone方法不会调用任何类的构造函数。

12.在进行乘法和除法,使用位移操作符会大大提升性能。

13.尽量使用HashMap和ArrayList,除非必要,否则不推荐使用HashTable和Vetor,后者由于使用同步机制,进而导致了性能的开销。

14.在遍历Map时,尽量使用entry遍历map,不要使用keyset()方式

15.尽量使用基本数据类型而不是包装类型。

16.急事消除过期对象的引用,放置内存泄露。

17.尽量少使用反射,如果使用反射,第一次使用反射,然后加入缓存。

18.尽量使用连接池,线程池,对象池、缓存等。

19.使用日志过程中参数拼接使用占位符

log.info("o:"+o)//不推荐

log.info("o:{}",o)//推荐

20.循环内不要不断创建对象引用

21.不要对数组使用toString()方法

22.不要对超出范围的基本数据类型做向下强制转型

23.把一个基本数据类型转微字符串,基本数据类型.toString()最快,valueOf次之,数据+""最慢

24.字符串变量和字符串常量equals的时候江字符串常量写在前面

25.不哟啊江数组声明微public static final

26.初始化集合,尽量制定大小

集合每次扩容的瑞安复杂度很有可能时O(n),所以尽量制定已知的集合大小,能减少集合的扩容次数

27.频繁使用Collection.contains方法,使用Set代替

28.公有静态变量应该通过类方位。

29.禁止使用构造方法BigDecimal(double),这样会存在精度损失风险,应该使用BigDecimal.valueOf(double)

30.枚举的属性字段必须时私有不可变

Java代码优化实践的更多相关文章

  1. (转)Java 代码优化过程的实例介绍

    简介: 通过笔者经历的一个项目实例,本文介绍了 Java 代码优化的过程,总结了优化 Java 程序的一些最佳实践,分析了进行优化的方法,并解释了性能提升的原因.从多个角度分析导致性能低的原因,并逐个 ...

  2. 大型网站系统与Java中间件实践

    大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著   ISBN 978-7-121-22761-5 2014年4 ...

  3. Java注解实践

    Java注解实践 标签 : Java基础 注解对代码的语意没有直接影响, 他们只负责提供信息给相关的程序使用. 注解永远不会改变被注解代码的含义, 但可以通过工具对被注解的代码进行特殊处理. JDK ...

  4. Android应用性能优化笔记(java代码优化)

    Java代码优化  缓存结果:  如果计算代价过高,最好把过去的结果缓存起来. 伪代码如下: result=cache.get(n);        //输入参数n作为键 if(result==nul ...

  5. 《大型网站系统与JAVA中间件实践》【PDF】下载

    <大型网站系统与JAVA中间件实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 到底是本什么书,拥有这样 ...

  6. JAVA记录-java代码优化策略

    java代码优化策略 1.生成对象时,合理分配空间和大小:new ArrayList(100); 2.优化for循环: Vector vect = new Vector(1000); For(int ...

  7. Java代码优化,都有哪些常用方法?

    Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积.提高代码运行效率是有巨大帮助的, ...

  8. Java代码优化方案 J2ME内存优化

    Java代码优化方案 J2ME内存优化 从几本书上,N个网站上整理的一些JAVA代码优化方案,最近的项目只有1M内存可用,必须很抠门了~J2ME项目更要注意的 避免内存溢出 l 不用的对象释放(置空) ...

  9. 关于Java代码优化的44条建议!

    关于Java代码优化的N条建议! 本文是作者:五月的仓颉 结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,作者的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼 ...

随机推荐

  1. 把 CPU “玩”起来

    前言 从开始学习编程之后,就渐渐痴迷于技术,平时遇到购书满减活动时就忍不住买一堆书.前两天闲着无聊,翻开了去年买的<编程之美>,目录里的“让 CPU 占用率听你指挥”吸引力我的眼球.这一年 ...

  2. 2017-10-28 noip模拟赛by WISCO 信息组

    第一次做模拟赛,自我感觉良好(大概是这套题比较简单) T1 名称为“数据结构”,这也太坑了点……233 要维护一个数列(初始为零),支持区间加与查询. 查询的是一个区间中有多少数满足min<=( ...

  3. (转)Bypass xss过滤的测试方法

    from wooyun//五道口杀气 · 2014/01/02 19:16 0x00 背景 本文来自于<Modern Web Application Firewalls Fingerprinti ...

  4. BZOJ 1152 歌唱王国

    题目传送门 分析: 这道题很神仙,我们给出低配版解法和高配版解法2333 低配版: 首先知道这样一个公式...(证明去高配版) 当一个字符串S其中S [ 1 , i ] = S [ n - i + 1 ...

  5. Spring-Cloud之Eureka注册中心环境搭建(单节点)

    一 Eureka概述 服务启动时会生成服务的基本信息对象InstanceInfo,然后在启动时会register到服务治理中心. 注册完成后会从服务治理中心拉取所有的服务信息,缓存在本地. 之后服务会 ...

  6. php--->使用callable强制指定回调类型

    php 使用callable强制指定回调类型 如果一个方法需要接受一个回调方法作为参数,我们可以这样写 <?php function dosth($callback){ call_user_fu ...

  7. 关于Windows Server 服务器 安装tomcat部署Java Web 项目的问题

    我遇到的问题是:不知道怎么配置,感觉在服务器上部署一个web项目,应该是很高大上,步骤应该很繁琐,但是,事实却不是那样.配置反而挺简单. tomcat配置:在tomcat安装目录中的conf文件夹下有 ...

  8. C++ 自动类型推断

    C++语言提供了自动类型推断的机制,用于简化代码书写,这是一种很不错的特性,使用auto和decltype都可以完成自动类型推断的工作,而且都工作在编译期,这表示在运行时不会有任何的性能损耗. 一.a ...

  9. c++中的动态内存分配

    使用new和delete动态的分配和释放内存 使用new来分配新的内存块,通常情况下,如果成功,new将返回一个指针,指向分配的内存,否则将引发异常,使用new时,需要指定要为那种数据类型分配内存: ...

  10. 2、TCP/IP

    TCP/IP协议栈:物理层.数据接口层.网络层.传输层.应用层或网络接口层.网络层.传输层.应用层 TCP/IP协议栈的核心协议:1.TCP2.UDP3.ICMP4.IGMP5.ARP:映射IP→Et ...