栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 性能优化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 性能优化

存储定理

存储性能

优化法则

优化法则归纳为4个层次:
【1】减少数据访问(减少磁盘访问)
【2】返回更少数据(减少网络传输或磁盘访问)
【3】减少交互次数(减少网络传输)
【4】减少服务器 CPU开销(减少CPU及内存开销)

数据库优化法则

代码示例

案例一:通过遍历List从数据库中获取数据进行处理,应当直接传入 List从数据库中一次性获取数据。

 list.forEach( l -> {
 	 ...
     // 从数据库中获取数据
     Object o = dal.getInfoByIdList(l);
     ...
 });

案例二:对从数据库中获取到的数据进行过滤筛选,应当直接返回需要的数据,减少数据量的传输。

// 从数据库中获取数据
List responseList = dal.getInfoByIdList(list);
if (responseList !== null && responseList.size() > 0) {
    Object o = responseList.stream().filter(r -> r.status == 0 || r.status == 1).findFirst();
}
return o;

案例三:sql应当只查 count(id) 减少网络传输和磁盘访问

// 从数据库中获取数据
List responseList = dal.getInfoByIdList(list);
return responseList.size();

关于DB使用注意的优化事项:
【1】正确使用索引,只通过索引查数据;查看复杂sql语句的执行计划,优化sql语句的执行计划,分页等。
【2】尽量不要使用存储过程,不要在sql中包含复杂的业务逻辑,尽量减少join。

代码优化

代码优化法则:
【1】减少没必要的内存分配;
【2】减少没必要的计算;
【3】减少网络开销;
避免频繁进行内存回收,减少GC次数,特别是FULL GC
【1】避免随意使用静态对象,防止 Perm OOM;
【2】避免内存泄漏,如String 对象大量创建,队列消费速度跟不上生产速度,防止 Heap OOM;
【3】避免不必要的局部变量,减少 Young GC;

掌握自己所写代码的的时间复杂度和空间复杂度,掌握基本的数据结构和算法,知道常用的时间换空间或空间换时间的数据结构和算法
推荐看《算法导论》和《编程珠玑》

代码示例

通过list遍历多次进行RPC调用,应该只进行一次RPC调用,将逻辑判断放到RPC服务层实现并返回。

// 每个 tag进行一次 RPC(memcache/db) black 调用
int count = (int) list.stream().map(r -> tagBI.Instance.getTagBlackByName(r)).filter(Objects::nonNull).count();

改进建议:
【1】开发经理或架构进行Code Review,加强Code Review力度;
【2】性能测试压力测试来发现性能问题;
【3】开发人员积极提升,扎实基础,学习技术;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756652.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号