• java异常的排除方法


    1.

    现象:CPU占用100%

    猜测:线程执行了死循环,且不含执行io中断的操作

    处理方式:整个机器全cpu占用100%,如果是web应用 可以nginx的心跳检测功能做转移;在CPU自己化解后通过jps、top -pH jstack>1.txt排除

    2.

    现象:响应越来越慢、内存占用越来越大,甚至出现OOM

    猜测:死锁-----jvm上synchronized的错误使用,lock和notify的先后顺序逻辑错误

    处理方式:线程池的场景下 jstack隔时间段的对别,对比线程的waiting/block状态;或者看哪个线程存活的时间最长;

    3.排除bug的思路

    重要性:开发工作是排除bug的路上和排除bug中

    3.1 不要猜 要看上游和下游的日志,或者用看的日志证实自己的猜想

    3.2 分而治之 断点

    3.3 根据间歇性bug发生的时间点或者触发事件找规律

    3.4 控制变量法:一次只修改一个地方 来排除,排除后记得改回来,排除前记得要备份

    3.5 把目的、做的操作记录下来,避免慌乱和混乱

    3.6检查插头:以为一定不会出错的地方很可能就是出错的地方

    3.7亲眼看到问题,比如报“文件不存在”的错误,事实上可能是没有权限或者路径不对

    3.8 头脑风暴,听取别人的观点

    3.9 大众的异常问百度,小众问谷歌

    4. 工具

    4.1阿里的arthas

    4.2 jperftools.jar

    4.3 《调试九法    软硬件错误的排查之道》书

     5.疑难杂症故障原因

    5.1文件编码

    5.2缓存

  • 相关阅读:
    使用jxl.jar操作Excel
    ThreadLocal学习
    ArrayList与Vector、HashMap与HashTable
    String, StringBuffer, StringBuilder比较
    ArrayList与LinkedList实现比较
    Java文件备份类
    Maven安装与更新
    Eclipse安装反编译工具JadClipse
    Linux关闭防火墙
    Hadoop简介
  • 原文地址:https://www.cnblogs.com/hzq3554055/p/11992525.html
Copyright © 2020-2023  润新知