java网络编程的经典和使用的案例 Java编程中的性能优化如何实现?
Java编程中的性能优化如何实现?
我认为性能优化应该分为两步:第一步:寻找性能瓶颈,第二步:性能调优;
下面分别分析:
步骤1:找到性能瓶颈。
通常,性能瓶颈的出现是外部处理系统的资源消耗过多和性能不足;或者资源消耗不多,但节目效果还是很慢;
资源主要消耗在cpu、文件io、网络io和内存上。当某种资源消耗过多时,系统会反应缓慢。
外部处理系统性能不足主要是由于其他系统或数据库提供的功能响应速度不够。外部系统响应慢也可能是资源消耗过大造成的,所以数据库响应慢可以调优。
资源消耗低的主要原因是程序代码效率不高、资源利用不充分或程序结构不合理;
1.1cpu消耗分析
可以通过top、pidstat等相关命令,找出各种类型的cpu消耗比例。最常见的类型是us和sy,分别代表用户进程消耗和线程间切换消耗。如果us太高,可以找到相关的线程ID,然后分析代码;如果sy太高,是否会导致太多线程切换?
1.2文件io消耗
要跟踪一个线程的文件IO消耗,可以通过pidstat查找,可以查到每秒的kb读写次数;找到若干个读写kb的线程,然后用jstack找到相关的java代码,然后进行分析;
1.3网络io消耗
你可以通过sar分析网络消耗,但是你可以 不要具体说明每个线程消耗的网络io。只能转储线程,找到产生大量网络IO的线程。
1.4内存消耗
结合top或pidstat和jvm 的内存分析工具;需要区分jvm外的物理内存和jvm堆区的内存;如果是jvm外的物理内存,要分析程序中的直接ByteBuffer,如果是jvm堆,可以通过jvisualvm分析;
1.5资源消耗少但还是慢。
主要原因是:锁竞争激烈,硬件资源利用不足,数据量增加。
步骤2:性能调优
2.1jvm调优
主要包括每一代的规模,GC策略等。世代规模设置:避免将世代规模设置得过小或过大;避免幸存者面积过小或过大;新生代生存周期的合理设定;GC策略根据吞吐量优先级或延迟优先级设置策略;
2.2程序调谐
1.CPU消耗严重解决。
us太高主要是因为执行线程可以在没有任何挂起动作的情况下运行;Sy太高主要是因为创建的线程太多,导致线程上下文切换;
2.文件IO消耗严重解决。
文件IO消耗严重的主要原因是多个线程向同一个文件写入大量数据,导致文件很快变得非常大。但是写入速度越来越慢,导致线程之间对文件锁的竞争非常激烈。常见的调优方法有异步文件写入、批量读写、限流和文件大小限制;
3.网络IO消耗严重解决。
主要原因是同时发送或接受的数据包太多,解决方法是限制流量;
4.内存消耗严重解决。
解决方案:释放不必要的引用,使用对象缓存池,采用合理的缓存失效策略,使用softReference和WeakReferenc
新人的java之路,该怎么开始?
学习零基础Java需要掌握最基本的Java语法和编程框架,编程工具的安装和使用等。,但是一定要记得边学边练编程,进一步实现项目实战!你可以看看老杜 的哔哩哔哩Java Zero Foundation介绍,这是目前第一个突破1000万大关的Java视频教程。老杜也是学生非常敬佩和喜欢的老师。视频教程的代码格式极其规范,非常适合零基础的人观看。而且基本视频教程都是老杜上课录的。入门是零基础,视频质量超高,非常适合零基础的小白入门!
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。