性能概述

公司投入人力物力成本开发出的程序,如果出现程序瘫痪、界面停顿、抖动、响应迟缓等问题,会大大降低用户体验,损失大量用户。对于上述问题,都是需要性能调优来解决的问题。

程序性能主要表现在代码的执行速度、软件系统的内存分配是否合理、代码的启动加载时间是否够长、软件系统的负载承受能力是否足够等方面。

常见的系统瓶颈如下:

磁盘I/O:磁盘io读写速度远小于内存读写,低效的磁盘io会拖垮整个系统。
网络传输:代码需要对互联网上的数据进行读写,由于网络环境的不确定性,网络读写的速度较慢也会成为系统性能瓶颈。
CPU资源抢占:系统中存在科学计算、3d渲染等对cpu资源长期占用的操作,也会造成其他操作cpu资源抢占时的性能问题。
异常捕获:异常捕获和处理较为消耗资源,程序中过多捕获异常也会造成性能问题
数据库操作:大部分系统需要数据库读写查询,如果数据读写耗时较长也会拖死整个系统。
高并发场景下的锁竞争:在高并发场景下,为了防止并发问题时常需要加锁,在锁资源抢占时,会造成系统的性能问题。
系统内存的分配:内存和磁盘的比例要合理,内存过小也会成为系统读写
的瓶颈。

对于很多刚刚入门学习Java的学员而言,如何更好的学习到Java的相关理论知识很重要。除了多打代码之外,那么掌握一些简单有效的Java性能优化小技巧,不仅仅有利于更好的运用Java编程语言,同时还能提高程序性能!

今天小编就来分享一份Alibaba内部的720页Java程序性能优化实战手册,上线之后大获好评!当时看完这份资料的时候,感到首先就Java的方方面面讲得比较全,但是不乱。而且每个点都讲得比较清楚,读下来也没有什么盲点。干货非常多。国内少有的能写得这么好的。我看了收获很多。

核心内容

把细节打磨得极其突出

以前我以为写的代码要崩溃是件挺困难的事情,但是现在发现貌似系统瘫痪也挺常见的……

当遇到系统瘫痪,所做的办法也不过是通过Linux命令查找线上环境的性能指标,查看dump日志,然后查代码,最后定位问题。看起来是一个很简单的步骤,但是这里每一步都考验着基础和功底。

我以为,要想做好Java性能调优,有几点是很重要的。

第一,是计算机相关的基础要足够扎实。我们需要熟悉计算机组成原理、操作系统、数据库等等基础知识。这样才有可能在纷繁复杂的系统中找到调优的点。

其次,要透过源码来熟悉技术的本质。我经常觉得,只通过技术论坛上学到的技术是不够的,那些都是生产者消化后总结的知识点。我们需要去深入源码,自己去分析学习和总结,这样才能更客观地学习一项技术,而且还要能通过源码来学习别人的思维方式。

最后,则是要善于总结。使用一项技术,不能仅仅停留在“可以用”“好用”等方面,而是要善于去追问:为什么要使用,使用对系统性能有什么提升?和其他的技术对比好处在哪?其原理又是什么?唯有在理解这些问题之后,才能在遇到性能问题的时候,及时地想到解决方案。

听我一句劝好吗?放下那些老掉牙的性能优化笔记吧!又不是没有新的,跟不上时代的学了也没法直接用呀!相关推荐

  1. 听我一句劝,单片机不要去学STM32真的

    听我一句劝,单片机不要去学STM32真的 ///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦.最近 ...

  2. 华为mate30epro支不支持鸿蒙,听我一句劝,华为手机可以支持,但这4款不要买

    原标题:听我一句劝,华为手机可以支持,但这4款不要买 如今的华为举步维艰,正在努力推进新机的发布,不断的打磨鸿蒙操作系统,华为的这份坚定意志可歌可泣,但有一说一,华为手机可以支持,只不过这四款希望大家 ...

  3. 听师兄一句劝,早点去追学姐学妹!

    听师兄一句劝,早点去追学姐学妹,为啥呢? 看完这篇文章你就知道了. 假设有三男(分别是 A ,B ,C )和三女(分别是 x,y ,z ),他(她)们对异性的心仪程度如对话框所示. 比如对于男 A 来 ...

  4. 《面试技巧》孩子,听叔一句劝,面试水太深,你把握不住。

    人世仙家本自殊,何须相见向中途.惊鸿瞥过游龙去,漫恼陈王一事无. 嗨,大家好,我是洛神,性别男.一个来自快乐星球的程序员. 欢迎大家专注我的公众号[程序员洛神],绝对让你有意外收获哟 前言 首先要先向 ...

  5. 听皮皮一句劝zIndex 的水太深,你把握不住!

    前言 本文基于 Cocos Creator 2.4.5 撰写. ???? 普天同庆 来了来了,<源码解读>系列文章终于又来了! ???? 温馨提醒 本文包含大段引擎源码,使用大屏设备阅读体 ...

  6. 听哥一句劝,按这套嵌入式的课程内容和课程体系去学习

    听哥一句劝,按这套嵌入式的课程内容和课程体系去学习 一.嵌入式的难点 嵌入式开发比互联网软开(比如Java后端)还是要难一些的,比如Java开发,基本也都是用户态的东西,但嵌入式很多东西都深入到了内核 ...

  7. 【听哥一句劝,C++水很深,你把握不住啊!】C++提高班之 符与*符

    C++提高班之 &符与*符 像&和*这样的符号,既可以作为表达式中的运算符,也能作为声明的一部分出现,符号的上下文决定了符号的意义: int i = 27;int &r = i ...

  8. 求你了,听我一句劝吧,这几个玩意就别学了!

    作者:沈世钧 链接:https://www.zhihu.com/question/305924723/answer/557800752 本文我主要谈一下那些Java知识"已经过时" ...

  9. 听叔一句劝,消息队列的水太深,你把握不住!

    很多人在做架构设计时往往会"过度设计",简单问题复杂化,上来就引一堆中间件,我想大概原因主要有下面两点: 为了秀(学)技术而架构 我们常说技术是为业务服务的,不能为了技术而技术,为 ...

最新文章

  1. mybatis 配置_MyBatis教程3:优化MyBatis配置文件中的配置
  2. torch_geometric 笔记: 数据集Cora 简易 GNN
  3. Qt 断言的使用 Q_ASSERT
  4. MyBatis(一)MyBatis介绍和配置详解
  5. 20175223 MySQL
  6. 【万字长文】Spring Cloud Alibaba 开箱即用!
  7. 查看 svn 中本地项目的版本
  8. Java最大值和最小值
  9. Pcap封包维护工具
  10. python格式化输出类型_Python格式化输出format方法需要限定数据类型吗?
  11. Chromium OS源码
  12. java多属性的map_java集合(四)Map集合之Properties详解
  13. 计算机网络运行管理,计算机网络管理规定
  14. 你的快递“动”了吗,快递受阻,缺的不止快递小哥
  15. 计算机游戏的作文,描写电脑游戏的优秀作文300字(通用3篇)
  16. FLUENT中文教程
  17. codeforces Cthulhu 简单图论
  18. java修改源码方法
  19. DNS优化工具 namebench
  20. java自定义注解及获取注解参数

热门文章

  1. 第二章(1):Python入门:语法基础、面向对象编程和常用库介绍
  2. itoa 头文件 linux,【整理】Linux内核中的atoi,itoa等函数
  3. 主板 集显+pcie显卡 同时显示BIOS设置方法
  4. 我叫张东升,我是一名Android程序员,我有话要说
  5. 关于VMware连接本机WiFi上网的终极方法
  6. 8、ByteBuffer(方法演示2(allocate堆内存和allocateDirect直接内存))
  7. 用区块链时,你要考虑哪些问题?
  8. linux内核alarm,linux C之alarm函数
  9. PHP 开启COM组件 读取word文件
  10. 算法设计与分析之贪心法