前言

代码优化的最重要的作用应该是:避免未知的错误。在代码上线运行的过程中,往往会出现很多我们意想不到的错误,因为线上环境和开发环境是非常不同的,错误定位到最后往往是一个非常小的原因。然而为了解决这个错误,我们需要先自验证、再打包出待替换的class文件、暂停业务并重启,对于一个成熟的项目而言,最后一条其实影响是非常大的,这意味着这段时间用户无法访问应用。因此,在写代码的时候,从源头开始注意各种细节,权衡并使用最优的选择,将会很大程度上避免出现未知的错误,从长远看也极大的降低了工作量。

一、代码优化目标

1、减小代码的体积

2、提高代码运行的效率

二、代码优化细节

(1)尽量指定类、方法的final修饰符

带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。

(2)尽量重用对象

特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多

Java基础学习总结(135)——Java代码性能优化实践经验再总结相关推荐

  1. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会 直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有"01 ...

  2. Java虚拟机学习总结(2)——性能优化的一般性原则、层次与通用方法

    一.性能优化的一般性原则 (1).依据数据而不是凭空猜测 性能优化的第一原则是当我们怀疑性能有问题的时候,应该通过测试.日志.profillig来分析出哪里有问题,有的放矢,而不是凭感觉.撞运气.一个 ...

  3. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  4. Java基础学习总结(113)——异常最佳实践

    Java中的异常处理不是一个简单的话题.初学者很难理解,甚至有经验的开发人员也会花几个小时来讨论应该如何抛出或处理这些异常.这就是为什么大多数开发团队都有自己的异常处理的规则和方法.如果你是一个团队的 ...

  5. Java基础学习总结(50)——Java事务处理总结

    一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...

  6. java中哪些可以私有化_《Java基础学习笔记》JAVA修饰符之私有化(Private)

    1,什么是private修饰符? private是权限修饰符,用于修饰类中的成员(成员变量,成员函数). private修饰后的成员只在本类中有效. /* 例: * 将age私有化以后,类以外即使建立 ...

  7. 《Java基础学习笔记》JAVA面向对象之封装

    1,封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 2,好外:        a)将变化隔离.        b)便于使用.        c)提高重用性.        d)提高安全性 ...

  8. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  9. 90 % Java 程序员被误导的一个性能优化策略

    转载自   90 % Java 程序员被误导的一个性能优化策略 我们经常看到一些 Java 性能优化的书或者理念,说不要在循环内定义变量,这样会占用过多的内存影响性能,而要在循环外面定义.接触 Jav ...

最新文章

  1. Toby Walsh教授:四个指数趋势解释人工智能威胁论!
  2. ARC115D-Odd Degree【dp,欧拉回路】
  3. golang交叉编译
  4. SystemVerilog中根据系统时间产生随机数的函数
  5. Android实现ListView异步加载图片总结
  6. 英国Just Eat自动驾驶机器人的外卖系统上线
  7. 测试平台的发展与未来趋势
  8. php的弹出窗口,弹出窗口 PHP
  9. Spring 相关jar包详细介绍
  10. 万能打印之Delphi 2010实现(完结)
  11. V-rep机器人仿真软件使用的学习笔记-续
  12. 什么是GPS,GPS技术主要有哪些特点?
  13. Can't open /dev/sda3 exclusively. Mounted filesystem?解决办法
  14. RN通信底层原理 -- 总结篇
  15. 求助--报错:Caused by: java.lang.ClassCastException: org.apache.ibatis.type.InstantTypeHandler cannot be
  16. 用PS怎样把一个字体居中整个图片
  17. win11 nvidia驱动无法更新问题解决
  18. AOP切面获取参数的一个小技巧
  19. 精挑细选【三十首】车载导航专用高清mv视频影音库打包下载
  20. Python数据可视化的例子——热力图(heatmap)

热门文章

  1. echart饼图标签重叠_怎么让ECharts饼图的label标签不重叠?
  2. aspx 判断字符串是否为decimal_python实现判断一个字符串是否是合法IP地址
  3. 厦门理工学院c语言实验循环,厦门理工学院c语言实验4_循环答案).doc
  4. mysql的索引缺点_「缺点有哪些」数据库索引是什么 有什么优缺点 - seo实验室
  5. 深度优先搜索(DFS)和广度优先搜索(BFS)探究
  6. C++STL笔记(五):Deque详解
  7. osip和mysql_osip2和eXosip2协议
  8. 文本分类模型_【文本分类】几个可作为Baseline的模型
  9. 怀旧服小号最多的服务器,魔兽世界怀旧服小号战场将成为GZS量产高督的基地?...
  10. vue中 点击事件的写法_vue基础之事件v-onclick=函数用法示例