Java问题定位技术手册

简介: Java问题定位技术手册


这几天在整理书籍的时候发现了一本古老书籍叫《Java问题定位技术》。


image.png


这本书我之前看过,主要侧重对Java系统里所出现的一些bug进行拆解,教你如何解读error错误,如何定位问题。虽然这本书比较古老,而且有些JDK也迭代了,但不影响我们学习里面的定位思路。


image.png


目前已经出版了许多关于Java的书籍,但绝大多数书籍着重于介绍开发方面的主题。甚至同一主题的书籍,在市面上可以找到许多。对于系统地介绍Java问题 定位类的书籍却是少之又少,即使有这方面的内容,往往也是一笔带过。



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


系统运行遭遇问题(系统停止响应,运行越来越 慢,或者性能低下,甚至系统core dump),如何迅速命中问题的根本原因是颇具挑战性的任务。这类问题的定位技巧是这本书介绍的重点,借助这些技巧可以快速找到这些问题的突破口。



这本书将Java问题定位的方法体系化,提供一种以黑盒子方式进行问题定位的思路:如何使用线程堆栈进行性能瓶颈分析?如何分析内存泄漏?如何分析系统挂死?在掌握这本书所介绍的方法后,很多情况下无需对系统了解就可以对这类问题进行定位。


image.png


这本书除了介绍"事后"定位技术以外,同时还介绍了大量的事前预防技术,对一些严重影响稳定性或者可靠性问题相关的陷阱进行了深入分析,它们正是大型系统容易忽略但对系统稳定性和可靠性有巨大影响的暗礁,如果能在系统的设计和编 码阶段就防止埋上这些"地雷",那么就不需要事后补救这种代价极高的维护成本。


image.png


举个例子,我们能保证不存在内存泄漏吗?没人会在测试服务器中在完全模拟实际的负载的情况下 对系统进行一个周或者一个月的测试。因此,通过QA并不能保证没有内存泄漏的发生,因此 它很容易就被带入到产品中。


内存泄漏情况大多是与流量相关的,也就是说,流量越大,内存泄漏的速度就越快。这意味着你根本无法预测什么时候要重启程序,问题往往发生在系统最 忙的时候,墨菲法则往往就在这个时候生效。


"产品级别"的另一个方面是系统对所谓"瞬时峰 值"的应对能力,也就是应对系统的短暂性冲击的能力。经过短暂峰值的冲击的系统能否自动 恢复?很多系统经过短暂的峰值冲击,往往不能恢复,这常常是由于异常情况没有很好地进 行"善后处理",导致大量资源泄漏,


比如数据库连接泄露,一旦衰退开始,系统崩溃就只是迟 早的问题了。要想将功能完备软件变为产品级软件,系统要有一套完整的异常处理机制,对异 常进行了合适的"善后处理",避免由于异常导致的资源泄漏等问题。本书对这些具有坏味道的 代码也进行了深入剖析。



本书介绍的定位技术主要有:内存泄漏定位,线程堆栈分析等。内存定位套路比较固定, 但线程堆栈分析需要一定的火候,它需要一定的悟性和长期的修炼。在可靠性和稳定性问题 的定位中,线程堆栈分析是最有力的武器,掌握了这个定位工具,会大大增强自己的"内功"。



image.png


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


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


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



这份PDF我已经上传到网盘了,大家可以在我公众号后台回复【定位技术】进行获取。




相关文章
|
3月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
91 11
|
3月前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
93 7
|
1月前
|
JavaScript 安全 Java
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
48 12
|
8天前
|
存储 监控 数据可视化
SaaS云计算技术的智慧工地源码,基于Java+Spring Cloud框架开发
智慧工地源码基于微服务+Java+Spring Cloud +UniApp +MySql架构,利用传感器、监控摄像头、AI、大数据等技术,实现施工现场的实时监测、数据分析与智能决策。平台涵盖人员、车辆、视频监控、施工质量、设备、环境和能耗管理七大维度,提供可视化管理、智能化报警、移动智能办公及分布计算存储等功能,全面提升工地的安全性、效率和质量。
|
14天前
|
缓存 Java 物联网
CRaC技术助力ACS上的Java应用启动加速
容器计算服务借助ACS的柔性算力特性并搭配CRaC技术极致地提升Java类应用的启动速度。
|
3月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
2549 2
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
2月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
114 7
|
3月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
195 1
|
4月前
|
监控 算法 Java
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
|
4月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。

热门文章

最新文章