Java 内存问题排查攻略:从工具使用到根因定位
凌晨三点,线上服务突然报警——OOM 了。重启后暂时恢复,但过几个小时又崩。翻日志只看到 java.lang.OutOfMemoryError: Java heap space,到底哪里出了问题?是内存泄漏、还是堆配小了、还是某次大查询把内存撑爆了?
堆用 256MB、RES 1.2GB—Netty DirectByteBuffer 泄漏让服务反复 OOM
本文是线上问题实战录系列的第 10 篇 叙事框架:现象 → 排查过程 → 根因 → 修复 → 预防问题现象一个网关服务,堆内存只设了 256MB,实际也只用了 40%,但进程的 RES 已经到了 1.2GB。你是该加堆内存还是加机器?
Java OOM 实战:内存溢出原因与排查方法,从 Heap Dump 到 MAT 分析
在 Java 项目开发中,有一种异常让很多开发人员头疼:java.lang.OutOfMemoryError: Java heap space有时候,系统运行得好好的,突然接口响应变慢,GC 频繁执行,最后服务直接崩溃。有时候,服务启动没问题,但运行一段时间后就开始报 OOM。
3分钟搞懂Java NIO:Buffer、Channel、Selector背后的设计思想
#晒图笔记大赛#前几天面试一个做了三年 Java 的小伙伴,聊到 NIO 的时候,我问了一个看起来特别基础的问题:“你说说 Java NIO 主要由什么组成?”他想了几秒,说:“Buffer、Channel、Selector。”我点点头:“那它们分别是干什么的?
第3章 深入分析Java Web中的中文编码问题
第3章 深入分析Java Web中的中文编码问题大家好,这一章我们讲Java Web中的中文编码问题。编码问题一直困扰着程序开发人员,在Java中尤其明显,因为Java是跨平台语言,在不同平台的编码之间切换较多。
从崩溃到调优:吃透 JVM 运行时内存区域,从此和 OOM 说再见
想知道 Java 程序为什么会突然崩溃?为什么同样的代码,别人跑起来流畅,你却频繁 OOM?其实,这些问题大多与 JVM 运行时内存区域的 “运作逻辑” 有关。理解 JVM 内存结构,是掌握 Java 程序运行机制、做好性能调优和故障排查的核心。
JVM-13: 引用类型:强、软、弱、虚
引用类型:强、软、弱、虚:谁活谁死,跑一遍就知道四种引用的考题,答错的方式高度一致:把软引用背成「内存不足才回收」,把虚引用背成「比弱引用更弱」。背结论的人多,跑过一遍的人少。这篇写一段探针,四种引用全 gc 一遍,谁生谁死,屏幕上有数。
Netty ByteBuf内存设计源码解析
ByteBuf 是 Netty 自己实现的字节缓冲区,替代了 Java NIO 的 ByteBuffer。它解决了 ByteBuffer 的诸多不便,比如容量固定、读写切换麻烦等。Netty ByteBuf是什么?ByteBuf 是 Netty 中的字节容器。
Java中怎样将bytes转换为long类型?
在Java中将字节数组(bytes)转换为long类型,可以使用Java的ByteBuffer类来实现。ByteBuffer类提供了一种方便的方式来处理原始数据类型的字节序列。 以下笔者用具体的代码来演示下如何将bytes转换为long类型:import java.nio.
Java NIO核心原理(Channel+Buffer+Selector)面试精讲
在Java后端面试中,NIO是高频核心考点,尤其在高并发场景面试中,“Java NIO核心原理”“Channel、Buffer、Selector三者关系”“NIO与BIO的区别”几乎是必考题。