首页 > 编程知识 正文

java代码调用关系分析工具,阿里巴巴java开发手册终极版

时间:2023-05-06 08:36:57 阅读:62442 作者:4977

点击上面的'大数据肌肉猿'关注,星星标志会一起生长

在后台回复【加群】,进入优质学习交流群

2021年大数据肌肉猿公号奖励制度

这几天,我在整理书的时候发现了一本叫做《Java问题定位技术》的旧书。

我以前读过这本书,它主要是分解Java系统中出现的一些错误,并告诉你如何解读错误和定位问题。虽然这本书比较古老,而且有些JDK也迭代了,但不影响我们学习里面的定位思路。

目前出版了许多关于Java的书籍,但大多数书籍侧重于介绍开发的相关主题。 甚至同样主题的书,在市场上也能找到很多。 系统地介绍Java问题定位的书籍非常少,即使有其内容也大多有。

写过代码的同学都知道,无论是新手还是老手,功能需求都不复杂,也不需要花太多时间,真正棘手的是bug,也就是报错,有时你可能花几天时间都在研究这一个报错,而且是毫无思路和进展。

系统运行有问题(系统没有响应、运行缓慢、性能下降、甚至出现系统核心dump ),如何快速命中问题的根本原因是一项非常困难的任务。 这类问题的定位技巧是这本书介绍的重点,利用这些技巧可以快速找到这些问题的突破口。

本书系统化了Java问题的定位方法,提供了以黑箱方式进行问题定位的思路。如何使用线程堆栈进行性能瓶颈分析?如何分析内存泄漏?如何分析系统挂死?掌握本文档介绍的方法后,通常可以在不了解系统的情况下定位此类问题。

本书除了“事后”定位技术外,还介绍了许多事前预防技术,深入分析了与严重影响稳定性和可靠性问题相关的陷阱。 这些在大型系统中容易被忽视,但对系统的稳定性和可靠性有很大影响的暗礁,如果在系统的设计和编码阶段能够防止这些“地雷”的嵌入,就不需要事后修复那样成本极高的维护成本

例如,你能保证没有内存泄漏吗? 没有人在测试服务器上完全模拟实际负载的情况下测试系统一周或一个月。 因此,QA不能保证不发生内存泄漏,而是很容易带入产品中。

内存泄漏大多与流量相关。 也就是说,流量越多,内存泄漏的速度就越快。 这意味着无法预测何时重新启动程序。 问题往往发生在系统最忙的时候,墨菲定律届时生效。

“产品级别”的另一个方面是系统对所谓“瞬时峰值”的应对能力,是系统应对临时冲击的能力。 受到短峰值冲击的系统会自动恢复吗? 许多系统经过短暂的高峰冲击,往往无法恢复。 这是因为在很多情况下,异常事态没有很好地进行“善后处理”,泄露了大量的资源。

例如,如果数据库连接泄漏并开始衰退,则系统崩溃只会变慢。 要将功能完备的软件转化为产品级软件,系统必须有完善的异常处理机制,对异常进行适当的“善后处理”,避免异常导致的资源泄露等问题。 本书还深入分析了这些不良味道的代码。

本书介绍的定位技术主要有内存泄漏定位、线程栈分析等。 内存对齐路径相对固定,但线程堆栈分析需要一定的火候,这需要一定的感悟和长期的修炼。 在可靠性和稳定性问题的定位中,线程栈分析是最有力的武器,掌握这个定位工具,可以大大提高自己的“内功”。

像 《Effective Java》 这类规范的书籍更多的是教你如何写好代码,即使你写的代码很完美,也避免不了会出现问题,因为问题不是只出现在代码,可能跟你机器配置、内存分配、业务的增长与变动都有关系。

有些Bug是相对的,今年你写的代码是完美的功能实现,随着系统的迭代,明年你这个代码可能就是隐藏的Bug。

像开发仁爱的马里奥和新手的区别,更多的是在于对系统所出现问题的定位。很多公司养着现实的悟空,平时可能没干什么活,但当系统出现问题都需要他们出马应对,而且非他们不可。

这个PDF是我上传到网上的。 大家可以在我的公众号后台回复【定位技术】获取。

获取方式

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。