【性能测试】JAVA性能调优

本文详细介绍了JAVA性能调优的步骤,包括寻找性能瓶颈、分析CPU、文件IO、网络IO和内存消耗,以及JVM和程序层面的调优策略。重点讨论了CPU上下文切换、JVM内存管理和垃圾收集、锁竞争、并发处理等方面,提供了多种优化方法,旨在提升系统性能。
摘要由CSDN通过智能技术生成

一、调优步骤

        衡量系统现状、设定调优目标、寻找性能瓶颈、性能调优、衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈)、性能调优结束。

二、寻找性能瓶颈

        性能瓶颈的表象:资源消耗过多、外部处理系统的性能不足、资源消耗不多但程序的响应速度却仍达不到要求。

三、资源消耗

CPU、文件IO、网络IO、内存。

四、外部处理系统的性能不足

        所调用的其他系统提供的功能或数据库操作的响应速度不够。

资源消耗不多但程序的响应速度却仍达不到要求:程序代码运行效率不够高、未充分使用资源、程序结构不合理。

4.1、CPU消耗分析

        CPU主要用于中断、内核、用户进程的任务处理,优先级为中断>内核>用户进程。

  • 上下文切换:

        每个线程分配一定的执行时间,当到达执行时间、线程中有IO阻塞或高优先级线程要执行时,将切换执行的线程。在切换时要存储目前线程的执行状态,并恢复要执行的线程的状态。

        对于Java应用,典型的是在进行文件IO操作、网络IO操作、锁等待、线程Sleep时,当前线程会进入阻塞或休眠状态,从而触发上下文切换,上下文切换过多会造成内核占据较多的CPU的使用。

  • 运行队列:

        每个CPU核都维护一个可运行的线程队列。系统的load主要由CPU的运行队列来决定。

        运行队列值越大,就意味着线程会要消耗越长的时间才能执行完成。

  • 利用率:

        CPU在用户进程、内核、中断处理、IO等待、空闲,这五个部分使用百分比。

4.2、文件IO消耗分析

        Linux在操作文件时,将数据放入文件缓存区,直到内存不够或系统要释放内存给用户进程使用。所以通常情况下只有写文件和第一次读取文件时会产生真正的文件IO。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值