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

news2025/2/23 19:56:08

性能概述

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

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

常见的系统瓶颈如下:

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

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

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

核心内容

把细节打磨得极其突出

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之快速排序(重点)

快速排序 算法所需 一个基准点 左边是比其小的数,右边是比其大的数 先使所指的元素作为基准元素low 用一个piviot存储49 然后进行比遍历操作 就是high向左移动(high–),到第一个比piviot小的元素进行一个data[low]data[high] 然后进行low,找…

基于最低水平面的三维装箱问题的启发式算法

⭐️ 前言 小编之前写过一篇博文:求解三维装箱问题的启发式深度优先搜索算法(python),详述了基于空间选择的三维装箱算法。本文考虑了一个事实:在某些情况下,我们在摆放物品时,总是优先选择较低的平面,基于…

LIN通讯

LIN通讯 一、LIN通讯的背景与意义 随着汽车电子的发展,汽车上的电子零件正在逐渐地增加。而电子零件的增加也导致更多的设备(传感器、执行器、电子控制器)需要加入汽车的局部网络,这些零件的增加还会带来配线的增加,…

java-springboot基于机器学习得心脏病预测系统 的设计与实现-计算机毕业设计

项目介绍 基于机器学习得心脏病预测系统通过对机器学习心脏病数据大数据分析统计系统的建设以实现机器学习心脏病数据分析统计功能。通过对心脏疾病变化市场的充分研究,结合自身技术储备情况,设计并开发了一套基于SpringBoot后台框架、Mybaits数据库映射…

web课程设计网页规划与设计---公司网站(5页 带下拉菜单)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 公司官网网站 | 企业官网 | 酒店官网 | 等网站的设计与制 | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 CSS&#…

动态规划算法学习二:最长公共子序列

文章目录前言一、问题描述二、DP实现1、最优子结构性质*****2、状态表示*****3、状态递归方程*****4、计算最优值*****5、代码实现:输出最长公共子序列6、代码实现:输出最优解前言 一、问题描述 列举X的所有子序列,然后检查它是否也是Y的子序…

Java设计模式很难吗,这篇带你熟悉设计模式

3.1 概述 可以发现,设计模式好像都是类似的。越看越感觉都着不多。其实都是类似面向接口编程的一种体现,只不过侧重点不一样或者说要体现的结果不一样。 3.2 使用场景 问题一:应对可能变化的对象实现 方案:间接创建 模式&…

pycharm远程连接服务器

遇到的问题: 在服务器上配环境 流程: 先安装anaconda(去其官网下载个脚本文件到服务器上,然后启动脚本即可) bash Anaconda3-5.3.1-Linux-x86_64.sh然后创建 python环境 conda create -n pytorch python3.10去pyt…

【Linux】搞懂进程地址空间

文章目录1、从程序地址空间开始1.1 在C/C中看到的地址实际是?1.2 感性理解虚拟地址空间2、进程地址空间2.1 进程地址空间是怎样被描述的?2.2 进程地址空间和内存的关系2.3 为什么需要进程地址空间?1、从程序地址空间开始 1.1 在C/C中看到的地…

并发:线程状态

java的线程状态分为六种 新建 NEW 当一个线程对象被创建,但是还没有调用start方法时处于新建状态 此时未与操作系统底层线程关联 可运行 RUNNABLE 调用了start方法,就会由新建进入可运行状态 此时与底层线程关联,由操作系统调度执行 &…

python就是学不会怎么办?

编程从来都不是只看,只照葫芦画瓢就能学会的学科要想学会,必须是要有你个人是思考的,学会掌握编程逻辑,在学的过程中想为什么这么写,应该怎么去实现这个功能,拆分为几步不断的实操练习才能让你真的掌握知识…

并发,并行,串行,同步,异步,进程,进程池,线程,线程池

并发,并行,串行,同步,异步,进程,进程池,线程,线程池 进程 什么是进程: 开发写的代码称之为程序,将程序运行起来,就是进程 进程是申请一块内存空…

vue中动态引入图片为什么要是require, 你不知道的那些事

相信用过vue的小伙伴,肯定被面试官问过这样一个问题:在vue中动态的引入图片为什么要使用require 有些小伙伴,可能会轻蔑一笑:呵,就这,因为动态添加src被当做静态资源处理了,没有进行编译,所以要加上require, 我倒着都能背出来… emmm… 乍一看好像说的很有道理啊,但…

Linux实现文件定期本地备份/异地备份/删除备份的脚本

一.背景 1.总会出出现环境上的数据丢失,在没有备份的情况下会非常的被动,不管是由于病毒还是人为的原因造成的程序、数据被删除,有时候后悔已经来不及,不如提前做到数据的备份,而异地备份也更加的保险一点。 2.数据备…

【Servlet】1:踏入JavaWeb的第一把钥匙

目录 第一章 | JavaWeb序章 | 章节概述 | JavaWeb项目运行流程 | 静态与动态资源 | Javaweb开发人员的三个任务 第二章 | HTTP网络协议 | 章节概述 | HTTP简介 | HTTP请求三要素 | HTTP请求包、响应包 | HTTP状态码 | HTTPS vs HTTP 本文章属于后端全套笔记的第三部…

Jenkins 如何 使用企业权限 登录

实现方式 基于Jenkins的 “CAS Plugin” 和 “Role-based Authorization Strategy”插件实现 CAS Plugin: 该插件支持使用CAS作为身份验证源,以支持单点登录(SSO)。一般的,企业都会有 这么一个服务,提供企业 统一身份管理,比如 百…

【GlobalMapper精品教程】026:影像黑边白边出现的原因及解决办法汇总

本文讲解Globalmapper中,影像黑边白边出现的原因及解决办法汇总。 文章目录 1. 影像黑边白边出现的原因2. 影像黑边白边的解决方法1. 影像黑边白边出现的原因 通常,由于影像格式、像素深度、无效值、背景值等原因,会产生黑边或者白边,给影像的拼接或者裁剪带来困扰。 2. …

基于ERP集成的流程制造管理系统

ERP的含义是企业资源计划,含义是对企业所拥有各种资源进行综合规划和优化管理,用以降低成本,提高效率,增加利润。ERP最初是在90年代初提出的,那时的ERP概念,还只是根据计算机技术的发展和供需链管理,推论各…

什么是GEMM?该怎么去学习GEMM?

什么是GEMM? 它的英文全称是 GEneral Matrix to Matrix Multiplication (通用矩阵的矩阵乘法),Gemm在神经网络的计算中占据很重要的位置。 它代表全局矩阵到矩阵的乘法,它本质上完全按照它在tins上所说的那样,将两个输入矩阵乘法在…

批量替换网站程序中的gotoip域名

网站访问出现验证页面,这是因为网站调用了二级域名,西部数码二级域名用于测试访问效果,不能用于正式访问,但是有些用户网站调试安装时使用了二级域名,内部链接没有修改,所以访问调用出现了验证页面。 这时要检查网站后…