JAVA性能优化

从JAVA角度优化CPU,内存,磁盘

一、CPU

  • 尽量让cpu少干活
    1.减少重复计算
    可利用临时变量存储,数据比较多时用map
    缓存优化:当从po计算到vo的逻辑太过复杂时,在中间缓存一层bo,再加一个本地缓存
    2.减少数据量
    3.sql优化
    4.合并小请求,拆分大请求
  • 多线程
    1.利用线程池添加并行度,线程池的七个参数要设计的合理一点
    2.降低锁的粒度
  • cpu缓存
    1.减少cpu缓存的刷新次数,此优化点不大,对整体影响比较小,但如果追求一个极致的性能可以做
    例子:有两个嵌套循环
    情况一:外循环100000000次,内循环10次;
		long s = System.currentTimeMillis();
        long count=0;
        long count1=0;
        for (int i = 0; i < 100000000; i++) {
            long a1 =1, b1 =1, c1 =1, d1 =1, e1 =1, f1 =1, g1 =1, h1 = 1;

            count1 = count1 + a1 + b1 + c1 + d1 + e1 + f1 + g1 + h1;
            for (int j = 0; j < 10; j++) {
                long a =1, b =1, c =1, d =1, e =1, f =1, g =1, h = 1;
                count = count + a + b + c + d + e + f + g + h;
            }
        }
        System.out.println(System.currentTimeMillis()-s);
        System.out.println(count);
        System.out.println(count1);

情况二:外循环10次,内循环100000000次;

		long s = System.currentTimeMillis();
        long count=0;
        long count1=0;
        for (int i = 0; i < 10; i++) {
            long a1 =1, b1 =1, c1 =1, d1 =1, e1 =1, f1 =1, g1 =1, h1 = 1;

            count1 = count1 + a1 + b1 + c1 + d1 + e1 + f1 + g1 + h1;
            for (int j = 0; j < 100000000; j++) {
                long a =1, b =1, c =1, d =1, e =1, f =1, g =1, h = 1;
                count = count + a + b + c + d + e + f + g + h;
            }
        }
        System.out.println(System.currentTimeMillis()-s);
        System.out.println(count);
        System.out.println(count1);

情况一相对情况二缓存刷新次数较多,所以性能较低,一般把循环次数少的放在外面稍微好点

二、内存

1.不创建无用对象和重复对象
2.内存淘汰
lru、lfu、软引用等

三、磁盘

1.减少IO次数
2.随机写变顺序写
3.随机读时利用零拷贝和page cache

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值