
JVM调优
文章平均质量分 84
宋小生的博客
《中间件源码》 示例先行,深入浅出的源码解析分享
展开
-
[Java故障排除指南- JDK11-学习笔记]-6-内存泄漏故障排除教程
目录6-内存泄漏故障排除教程6.1 了解 OutOfMemoryError 异常6.2 使用 JDK Mission Control 调试内存泄漏6.2.1 JMC检测内存泄漏6.2.2 jfr 工具6-内存泄漏故障排除教程如果您的应用程序的执行时间变得更长,或者如果操作系统似乎执行得更慢,这可能是内存泄漏的迹象。换句话说,正在分配虚拟内存,但在不再需要时不会返回。最终应用程序或系统内存不足,应用程序异常终止。6.1 了解 OutOfMemoryError 异常java.lang.OutOfMemo原创 2022-05-11 22:21:10 · 1507 阅读 · 0 评论 -
[Java故障排除指南- JDK11-学习笔记]-5-线程堆栈与死锁问题检测
5-线程堆栈与死锁问题检测线程堆栈分析在程序运行时我们想要查看程序的执行状态,可以通过进程的线程堆栈信息来分析进程的健康状态,如果获取到一个运行中的Java进程的线程堆栈呢,我们可以用这几个命令:先查询Java进程idjps -l 通过Java进程id查询当前进程的堆栈信息 jstack -l 17389如下是实际操作中的一个案例➜ ~ jps -l288 org.jetbrains.jps.cmdline.Launcher662451670 sun.tools.jps.Jps原创 2022-05-10 21:24:22 · 773 阅读 · 0 评论 -
[Java故障排除指南- JDK11-学习笔记]-4-诊断工具之使用JConsole 工具进行故障排除
4-诊断工具之使用JConsole 工具进行故障排除原创 2022-05-07 22:16:54 · 582 阅读 · 0 评论 -
[Java故障排除指南- JDK11-学习笔记]-3-诊断工具jcmd
目录3 诊断工具jcmd3.1 简介3.2 jcmd 有用命令3.3 使用 jcmd 进行故障排除3 诊断工具jcmd3.1 简介该jcmd实用程序用于向 JVM 发送诊断命令请求,这些请求对于控制 Java 飞行记录、故障排除和诊断 JVM 和 Java 应用程序很有用。jcmd必须在运行 JVM 的同一台机器上使用,并且具有用于启动 JVM 的相同有效用户和组标识符。一个特殊的命令jcmd <process id/main class> PerfCounter.print打印原创 2022-05-06 21:57:24 · 725 阅读 · 0 评论 -
[Java故障排除指南- JDK11-学习笔记]-2-诊断工具JMC和JFR使用
2 诊断工具2.1 诊断工具概述Java Development Kit (JDK) 提供特定于各种操作系统的诊断工具和故障排除工具。还可以使用 JDK 提供的 API 开发自定义诊断工具本节中描述的大多数命令行实用程序要么包含在 JDK 中,要么包含在本机操作系统工具和实用程序中。尽管 JDK 命令行实用程序包含在 JDK 下载中,但重要的是要考虑到它们可用于诊断问题并监视使用 Java 运行时环境 (JRE) 部署的应用程序。通常,诊断工具和选项使用各种机制来获取它们报告的信息。这些机制特定于原创 2022-04-27 22:21:30 · 2558 阅读 · 0 评论 -
[Java故障排除指南- JDK11-学习笔记]-1-Java 进行故障排除前的一些准备
1-Java 进行故障排除前的一些准备1.1 启用 JVM 故障排除的相关配置1.1.1 HeapDumpOnOutOfMemoryError配置将 -XX:+HeapDumpOnOutOfMemoryError 添加到 JVM 标志:如 -XX:+HeapDumpOnOutOfMemoryError应用程序运行到内存溢出时候将抛出错误,OutOfMemoryError.与核心文件一样,堆转储可能非常大,尤其是在使用大型 Java 堆运行时。同样,想想如果应用程序运行到OutOfMemoryEr原创 2022-04-26 21:34:17 · 837 阅读 · 0 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-8-ZGC垃圾收集器与其他注意事项
8-ZGC垃圾收集器与其他注意事项8.1 Z垃圾收集器Z 垃圾收集器 (ZGC) 是一种可扩展的低延迟垃圾收集器。ZGC 并发执行所有昂贵的工作,不会停止应用程序线程的执行超过 10 毫秒,这使得它适用于需要低延迟和/或使用非常大的堆(数 TB)的应用程序。Z 垃圾收集器作为实验性功能提供,并通过命令行选项启用 -XX:+UnlockExperimentalVMOptions -XX:+UseZGC。8.1.1 设置堆大小ZGC 最重要的调优选项是设置最大堆大小(-Xmx)。由于 ZGC 是并发原创 2022-04-25 21:32:37 · 1463 阅读 · 0 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-7-Garbage-First(G1)垃圾收集器如何调优?
目录7-Garbage-First(G1)垃圾收集器如何调优???7.1 使用G1 的一般建议7.2 从其他收集器迁移到 G17.3 如何提高 G1 性能7.3.1 观察完整的垃圾收集7.3.2 大对象产生的碎片7.3.3 调整延迟7.3.3.1 异常系统或实时使用7.3.3.2 引用对象处理时间过长7.3.3.3 Young-Only 阶段内的 Young-Only 收集耗时太长7.3.3.4 Mixed Collections混合收集耗时太长7.3.3.5 高更新 RS 和扫描 RS 时间7.3.原创 2022-04-24 23:17:05 · 1232 阅读 · 6 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-7-Garbage-First 垃圾收集器简介G1
目录7-Garbage-First 垃圾收集器简介G17.1 Garbage-First 垃圾收集器简介7.2 启用 G17.3 基本概念7.4 堆布局7.5 垃圾回收周期7.6 垃圾优先内部7.7 G1 标记7.8 在非常紧张的堆情况下的行为7.9 巨大的对象7.10 年轻一代的大小Young-Only Phase Generation Sizing7.11 空间回收阶段分代的大小7.12 与其它垃圾收集器的比较7-Garbage-First 垃圾收集器简介G17.1 Garbage-First 垃圾原创 2022-04-22 23:13:07 · 620 阅读 · 0 评论 -
[[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-7-并发标记扫描 (CMS) 收集器
目录7-并发标记扫描 (CMS) 收集器7.1 并发标记扫描收集器的性能和结构7.2 并发模式失败7.3 GC 时间过长和 OutOfMemoryError7.4 并发标记扫描收集器和浮动垃圾7.5 并发标记扫描收集器暂停7.6 并发标记扫描收集器并发阶段7.7 启动并发收集周期7.8 暂停调度7.9 并发标记扫描收集器测量7-并发标记扫描 (CMS) 收集器Concurrent Mark Sweep (CMS) 收集器是为喜欢更短的垃圾收集暂停并且能够在应用程序运行时与垃圾收集器共享处理器资源的应用程原创 2022-04-21 22:12:39 · 609 阅读 · 0 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-6-并行垃圾收集器
6 并行垃圾收集器并行收集器(这里也称为吞吐量收集器)是类似于串行收集器的分代收集器。串行收集器和并行收集器之间的主要区别在于并行收集器有多个线程用于加速垃圾收集。并行收集器通过命令行选项启用 -XX:+UseParallelGC。默认情况下,使用此选项,Minor GC and Full GC 并行运行,以进一步减少垃圾收集开销。6.1 并行收集器垃圾收集器线程数在一台机器上如果有N硬件线程,如果N大于 8,并行收集器使用固定分数N作为垃圾收集器线程的数量,可能不太好理解接下来详细看下:在具有原创 2022-04-20 20:52:18 · 660 阅读 · 0 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-5-当前可用的5个垃圾收集器简介
5-当前可用的5个垃圾收集器5.1 串行收集器串行收集器使用单个线程来执行所有垃圾收集工作,这使得它相对高效,因为线程之间没有通信开销。它最适合单处理器机器,因为它不能利用多处理器硬件,尽管它可以在多处理器上用于具有小数据集(最多大约 100 MB)的应用程序。在某些硬件和操作系统配置上默认选择串行收集器,或者可以使用选项显式启用**-XX:+UseSerialGC**。5.2 并行收集器并行收集器也称为吞吐量收集器,它是类似于串行收集器的分代收集器。串行收集器和并行收集器之间的主要区别在于并行收原创 2022-04-19 20:56:31 · 302 阅读 · 0 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-4-影响垃圾收集性能的因素
目录4-影响垃圾收集性能的因素4.1 总的堆内存4.1.1 影响生成大小的堆配置4.2 年轻代4.2.1 年轻代大小配置4.2.2 幸存区大小配置4-影响垃圾收集性能的因素影响垃圾回收性能的两个最重要的因素是总可用内存和专用于年轻代的堆的比例。4.1 总的堆内存影响垃圾收集性能的最重要因素是总可用内存。因为当代填满时会发生收集,所以吞吐量与可用内存量成反比。以下关于堆的增长和收缩、堆布局和默认值的讨论使用串行收集器作为示例。虽然其他收集器使用类似的机制,但此处提供的详细信息可能不适用于其他收集器原创 2022-04-18 21:21:02 · 459 阅读 · 0 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-3-垃圾收集器实现
目录3-垃圾收集器实现3.1 分代垃圾收集3.2 分代3.3 性能注意事项3.4 吞吐量和占用空间测量3-垃圾收集器实现Java SE 平台的一大优势是它使开发人员免受内存分配和垃圾收集的复杂性。但是,当垃圾收集是主要瓶颈时,了解实现的某些方面很有用。垃圾收集器对应用程序使用对象的方式做出假设,这些假设反映在可调参数中,这些参数可以在不牺牲抽象能力的情况下进行调整以提高性能。3.1 分代垃圾收集一个对象何时被认为是垃圾?,当正在运行的程序中任何其他活动对象的任何引用 无法再访问它时,它的内存可以被原创 2022-04-15 22:10:56 · 652 阅读 · 0 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-2-调优策略简介
2-调优策略简介JVM 为垃圾收集器、堆大小和运行时编译器提供与平台相关的默认选择。这些选择符合不同类型应用程序的需求,同时需要较少的命令行调整。此外,基于行为的调整会动态优化堆的大小以满足应用程序的指定行为。2.1 垃圾收集器、堆和运行时编译器默认选择2.2 基于行为的调优2.2.1 最大暂停时间目标2.2.2 吞吐量目标2.3 调整策略...原创 2022-04-14 21:57:51 · 732 阅读 · 0 评论 -
[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-1-垃圾回收调优简介
1垃圾回收调优简介为了支持这种多样化的部署,Java HotSpot VM 提供了多个垃圾收集器,每个垃圾收集器都旨在满足不同的需求。Java SE 根据运行应用程序的计算机的类别选择最合适的垃圾收集器。但是,此选择可能并非对每个应用程序都是最佳的。具有严格性能目标或其他要求的用户、开发人员和管理员可能需要明确选择垃圾收集器并调整某些参数以达到所需的性能水平.1.1 什么是垃圾收集器?垃圾收集器 (GC) 自动管理应用程序的动态内存分配请求。垃圾收集器通过以下操作执行自动动态内存管理:从操作系统原创 2022-04-13 20:21:21 · 1196 阅读 · 0 评论