
JVM
文章平均质量分 89
jvm基础知识、优化、问题排查处理
alden_ygq
一枚北漂7年多的资深SRE菜鸟,专注SRE方向,专注于运维体系建设。个人宣言:先努力成就自己,再用知识成就他人。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解读GC日志中的各项指标
GC 日志是 JVM 性能调优的重要依据,不同垃圾收集器(如 CMS、G1、ZGC)的日志格式有所差异,但核心指标含义一致。通过深入理解 GC 日志中的各项指标,可以精准定位内存泄漏、对象分配不合理、收集器选择不当等问题,从而优化 JVM 配置,提升应用性能。原创 2025-05-20 22:22:42 · 752 阅读 · 0 评论 -
如何通过分析GC日志来定位Java进程的内存问题?
GC 日志是排查 Java 内存问题的核心工具,通过分析日志可以了解堆内存使用模式、GC 频率、对象晋升规律等关键信息。通过系统分析 GC 日志,可以精准定位内存泄漏、对象分配不合理、收集器选择不当等问题,从而优化 JVM 配置,提升应用性能。原创 2025-05-20 20:50:30 · 900 阅读 · 0 评论 -
Java 进程异常故障定位及排查指南
Java 进程异常是生产环境中常见的问题,可能表现为 CPU / 内存飙升、响应缓慢、进程崩溃等。通过系统化的排查方法和工具,大多数 Java 进程异常都能快速定位并解决。关键在于建立完善的监控体系和标准化的排查流程。原创 2025-05-20 20:47:59 · 701 阅读 · 0 评论 -
java中新生代和老生代的关系
是堆内存的两个核心区域,它们通过对象晋升机制协同工作,共同构成了 JVM 分代垃圾回收的基础。协同工作,是 JVM 高效内存管理的核心。合理配置两者比例和 GC 参数,是性能调优的关键。在 Java 内存管理中,新生代与老年代的设计基于。Java 堆内存基于。原创 2025-05-20 20:10:59 · 564 阅读 · 0 评论 -
如何通过JVM参数来优化垃圾回收性能?
通过合理配置 JVM 参数优化垃圾回收(GC)性能是提升 Java 应用稳定性和响应速度的关键。通过以上参数组合和调优策略,结合应用特点(如内存规模、响应时间要求),可系统性提升 GC 性能。建议从基础配置开始,逐步调整并验证效果,避免一步到位的激进调优。原创 2025-05-20 19:42:27 · 423 阅读 · 0 评论 -
Java中的垃圾回收机制详解
Java 的垃圾回收(Garbage Collection, GC)是自动化内存管理的核心机制,通过自动回收不再使用的对象内存,避免手动内存管理的复杂性和风险。理解 GC 机制是 Java 性能调优的关键,需根据应用特点(如内存规模、响应时间要求)选择合适的收集器和参数配置,并通过监控工具持续优化。原创 2025-05-20 18:38:36 · 697 阅读 · 0 评论 -
jvm 专业术语解释
理解这些术语是深入掌握 JVM 原理和性能调优的基础,建议结合实际案例(如 GC 日志分析、内存溢出排查)加深记忆。:作为可达性分析起点的对象集合,包括虚拟机栈引用的对象、静态变量引用的对象等。新生代(Eden+Survivor)的垃圾回收,频繁触发,速度快。:老年代的垃圾回收,通常伴随一次 Minor GC,停顿时间长。:GC 过程中暂停所有用户线程的状态,是影响系统响应的关键因素。:根据对象存活周期将内存分为新生代、老年代,采用不同的回收算法。:用于记录跨代引用的表结构,避免全堆扫描。原创 2025-05-20 19:36:23 · 796 阅读 · 0 评论 -
Java内存溢出常见原因及解决方法
通过以上方法,可系统性解决 Java 内存溢出问题。:某电商系统高峰期频繁 Full GC。三者结合,同时建立完善的预警机制。:某微服务框架启动慢且 OOM。原创 2025-05-20 17:21:06 · 960 阅读 · 0 评论 -
java进程内存机制
掌握 Java 内存机制是高级工程师的必备技能,建议通过实战演练加深理解(如使用工具模拟内存溢出、分析 GC 日志)。答:Minor GC 清理新生代,Full GC 清理整个堆(包括老年代和 Metaspace)。答:通过堆转储文件(Heap Dump)分析对象引用链,找出无法被回收的对象。答:堆、方法区(Metaspace)、栈、本地方法栈、程序计数器。答:分代收集、并行与并发、可预测停顿时间、适合大内存场景。原因:对象创建过多,堆空间不足(如无限循环创建对象)。原因:NIO 直接内存分配过多,超过。原创 2025-05-20 17:00:44 · 574 阅读 · 0 评论 -
K8S中设置JVM堆栈大小的方法
在 Kubernetes(K8S)中设置 JVM 堆栈大小(堆内存和线程栈)需要结合容器资源限制和 JVM 参数配置,确保资源利用率和稳定性。通过 JVM 内置的容器感知特性,自动根据容器资源限制调整堆大小(JVM 10+ 默认支持)。原创 2025-05-18 18:34:36 · 594 阅读 · 0 评论 -
k8s 中java设置jvm堆栈大小不超过request/limit
在 Kubernetes 中部署 Java 应用时,合理设置 JVM 堆大小至关重要,需确保其不超过容器的资源请求(Request)和限制(Limit),以避免 OOMKilled 或资源浪费。通过以上配置,可确保 Java 应用在 Kubernetes 中稳定运行,避免因内存问题导致的故障。适用于无法升级到 JVM 10+ 的遗留应用,需确保容器内存限制(Limit)已正确设置。是 Kubernetes 写入的容器内存限制值(单位:字节)。若仅限制堆大小,可能导致非堆内存溢出。原创 2025-05-18 18:16:26 · 459 阅读 · 0 评论 -
JVM调优指南
6、为了验证自己的猜想,于是准备登录后台去测试下,结果在测试的过程中发现到处订单的按钮前端居然没有做点击后按钮置灰交互事件,结果按钮可以一直点,因为导出订单数据本来就非常慢,使用的人员可能发现点击后很久后页面都没反应,结果就一直点,结果就大量的请求进入到后台,堆内存产生了大量的订单对象和EXCEL对象,而且方法执行非常慢,导致这一段时间内这些对象都无法被回收,所以最终导致内存溢出。注意:此处的大小是(eden+ 2 survivor space).与jmap -heap中显示的New gen是不同的。原创 2025-05-17 22:40:14 · 645 阅读 · 0 评论 -
查看java进程gc情况
在 Java 应用性能调优中,监控垃圾回收(GC)情况是关键环节。通过以上方法,可全面监控 Java 进程的 GC 状态,及时发现并解决内存泄漏、GC 频繁等性能问题。原创 2025-05-17 20:49:06 · 735 阅读 · 0 评论 -
jvm分析工具/适用场景/最佳实践案例
在 Java 应用性能优化和故障排查中,选择合适的 JVM 分析工具至关重要。以下结合具体案例,系统介绍各类工具的适用场景和最佳实践。通过合理组合使用工具,遵循标准化排查流程,可高效解决 90% 以上的 JVM 性能和稳定性问题。原创 2025-05-17 19:14:45 · 1032 阅读 · 0 评论 -
如何找出Java进程中占用CPU或内存最多的线程?
在排查 Java 性能问题时,定位占用 CPU 或内存最多的线程是关键步骤。通过以上方法,可快速定位问题线程并进行针对性优化,提升 Java 应用的稳定性和性能。原创 2025-05-17 19:03:45 · 958 阅读 · 0 评论 -
linux如何查询java线程数?
是 JDK 自带的工具,用于生成 Java 进程的线程堆栈信息,通过统计线程数量可精确获取结果。通过上述方法,你可以快速准确地获取 Java 进程的线程数,为性能调优或故障排查提供依据。Linux 内核会将进程信息暴露在。命令可实时监控进程和线程,通过。在 Java 程序内部,可通过。参数切换到线程模式。原创 2025-05-17 18:58:27 · 483 阅读 · 0 评论 -
当java进程内存使用超过jvm设置大小会发生什么?
Java 进程总内存(堆 + 元空间 + 直接内存 + 其他)超出操作系统可用内存。常见于动态生成类(如反射、字节码增强框架)或未限制元空间大小的场景。:对象因错误引用无法被 GC 回收(如静态集合缓存数据未清理)。修复代码中的内存泄漏(如及时释放资源、避免全局缓存失控)。(最大堆内存)设置,且垃圾回收(GC)无法释放足够空间。检查类加载器泄漏(如未关闭的 WebApp 上下文)。优化代码逻辑,减少栈深度(如将递归改为迭代)。参数(需结合物理内存容量)。(默认无上限,依赖系统内存)。原创 2025-05-13 10:14:52 · 1114 阅读 · 0 评论 -
JVM 分析工具
在 $JAVA_HOME/bin 的目录下, 存在着许多小工具, 除了编译和运行 Java 程序外, 打包, 部署, 签名, 调试, 监控, 运维等各种场景都可能会用到它们。原创 2024-05-24 14:18:38 · 1669 阅读 · 0 评论 -
Tomcat调优总结
Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置。首先是对这几个参数的含义要有深刻而清楚的理解。以tomcat8.5为例,讲解参数。同时也得认识到一点,tomcat调优也受制于linux内核。linux内核对tcp连接也有几个参数可以调优。原创 2024-04-01 21:50:50 · 2198 阅读 · 0 评论 -
Linux系统之安装java开发环境
java下载地址:https://www.oracle.com/java/technologies/downloads/#java8。安装的版本为java-1.8.0-openjdk-devel.x86_64。运行测试文件,检查是否正确输出,正常输出打印内容,则java环境安装成功。在/etc/profile等环境变量文件中,删除java相关环境变量。检查本地系统版本,本次实践使用的是centos7.6版本。将jdk的二进制文件复制到/usr/local/目录下。2)搜索java的jdk版本。原创 2024-03-21 20:19:43 · 2833 阅读 · 0 评论 -
内存溢出(OOM)-汇总指南
这就跟现实生活中的宽带运营商类似,他们向所有消费者出售一个100M的带宽,远远超过用户实际使用的带宽,一个10G的链路可以非常轻松的服务100个(10G/100M)用户,但实际上宽带运行商往往会把10G链路用于服务150人或者更多,以便让链路的利用率更高,毕竟空闲在那儿也没什么意义。Native Heap Memory是JVM内部使用的Memory,这部分的Memory可以通过JDK提供的JNI的方式去访问,这部分Memory效率很高,但是管理需要自己去做,如果没有把握最好不要使用,以防出现内存泄露问题。原创 2024-03-05 21:33:28 · 1152 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
响应时间优先的应用 :尽可能设大,直到接近系统的最低响应时间限制 (根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。吞吐量优先的应用 :尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。原创 2024-03-04 12:03:09 · 151917 阅读 · 0 评论 -
Jvm之内存泄漏
java.lang.OutOfMemoryError,是指程序在申请内存时,没有足够的内存空间供其使用,出现OutOfMemoryError。产生该错误的原因主要包括:JVM内存过小。程序不严密,产生了过多的垃圾。原创 2024-02-27 22:02:55 · 1269 阅读 · 0 评论