[Java故障排除指南- JDK11-学习笔记]-1-Java 进行故障排除前的一些准备

本文介绍了在Java应用出现故障时进行排除的准备工作,包括启用HeapDumpOnOutOfMemoryError以捕获内存溢出,配置连续飞行记录以诊断各种问题,使用-verbosegc监控垃圾收集,设置JMX以进行远程监控,以及启用日志记录以辅助调试。通过这些配置,开发者可以更好地理解和解决Java应用中的性能和错误问题。
摘要由CSDN通过智能技术生成

1-Java 进行故障排除前的一些准备

1.1 启用 JVM 故障排除的相关配置

1.1.1 HeapDumpOnOutOfMemoryError配置

将 -XX:+HeapDumpOnOutOfMemoryError 添加到 JVM 标志:如 -XX:+HeapDumpOnOutOfMemoryError
应用程序运行到内存溢出时候将抛出错误,OutOfMemoryError.
与核心文件一样,堆转储可能非常大,尤其是在使用大型 Java 堆运行时。

同样,想想如果应用程序运行到OutOfMemoryError. 您想在错误发生时检查堆吗?在这种情况下,默认打开 flag 以便在应用程序遇到意外时获取此数据OutOfMemoryError。

1.1.2 飞行记录配置

运行连续的 Java 飞行记录:设置 Java 以运行连续的飞行记录。
连续飞行记录是 JFR 事件的循环缓冲区。如果应用程序遇到问题,您可以转储运行最后一小时的数据。JFR 事件有助于调试从内存泄漏到网络错误、高 CPU 使用率、线程块等各种问题。

使用连续飞行记录运行的开销非常低。有关生成连续 Java 飞行记录的信息,请留意后续博客.

1.1.3 GC信息

-verbosegc 添加到 JVM 命令行:该标志-verbosegc记录有关 Java 垃圾收集器的基本信息。此日志可帮助您找到以下内容:
垃圾收集运行时间长吗?

空闲内存是否会随着时间的推移而减少?

当应用程序抛出OutOFMemoryError或应用程序遇到性能问题时,垃圾收集器日志有助于诊断问题;因此,默认情况下打开该-verbosegc标志有助于解决问题。

使用日志轮换,以便应用程序重新启动不会删除以前的日志。从 JDK7 开始,flagsUseGClogFileRotation和NumberOfGCLogFiles可用于设置日志轮换。有关这些标志的描述,请参阅Java HotSpot VM 的调试选项。

1.1.4 打印 Java 版本和 JVM 标志

在提交 Java 错误或从论坛寻求帮助之前,请在日志文件中准备好基本信息。例如,打印 Java 版本和使用的 JVM 标志会很有帮助。
如果您的应用程序以脚本启动,请运行java -version以打印 Java 版本并在执行之前打印命令行。另一种选择是向JVM 参数 添加-XX+PrintCommandLineFlags和-showversion

1.1.5 为远程监控设置 JMC JMX

JMX 可用于使用 Mission Control 或 Visual VM 等工具远程连接到 Java 应用程序。除非您可以在运行您的应用程序的同一台机器上运行这些工具,否则设置它可能有助于以后监控应用程序、发送诊断命令、管理飞行记录等。如果启用 JMX,则没有性能开销。
另一种选择是在 Java 应用程序启动后启用 JMX,即使用诊断命令ManagementAgent.start。运行jcmd help ManagementAgent.start可与命令一起发送的标志列表。

1.1.6 开启必要的日志

使 Java 应用程序更易于调试,使用日志框架是启用未来调试的好方法。

如果您在特定模块中遇到问题,您应该能够在该模块中启用日志记录。指定不同级别的日志记录也很好,例如信息、调试和跟踪。有关 Java 日志记录的更多信息,请参阅Java 日志

技术咨询支持,可以扫描微信公众号进行回复咨询
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋小生的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值