一个导致JVM物理内存消耗大的Bug (club.perfma.com)

【简介】

发现一个系统老是被OS Kill掉,是内存泄露导致的。在查的过程中,阴差阳错地发现了JVM另外的一个Bug。这个Bug可能会导致大量物理内存被使用,我们已经反馈给了社区,并得到快速反馈,预计在OpenJDK8最新版中发布(JDK11中也存在这个问题)。

点击查看原文 >>

@PerfMa社区 2020-05-22 10:48 / 0个评论
赞过的人: @IT技术博客大学习 @PerfMa社区
要不要再学学下面的文章?
UTF-8 Overlong Encoding导致的安全问题 (www.leavesongs.com)
Overlong Encoding是将1个字节的字符,按照UTF-8编码方式强行编码成2位以上UTF-8字符的方法。

0xC0AE并不是一个合法的UTF-8字符,但我们按照UTF-8编码方式将其转换出来的,这就是UTF-8设计中的一个缺陷。

按照UTF-8的规范来说,我们应该使用字符可以对应的最小字节数来表示这个字符。那么对于点号来说,就应该是0x2e。但UTF-8编码转换的过程中,并没有限制往前补0,导致转换出了非法的UTF-8字符。

这种攻击方式就叫“Overlong Encoding”。
by @技术头条 2024-03-13 13:26 查看详情
JVM内存问题排查流程 (l1n.wang)
首先确认问题现象,可以通过服务状态,监控面板、日志信息、监控工具(VisualVM)等,确认问题类型:
1、内存使用率居高不下、内存缓慢增加、OOM等;
2、频繁GC:Full GC等;
发现问题不建议重启,留存状态。
by @技术头条 2024-03-12 22:26 查看详情
JVM 剖析花园:2 - 透明大页 (www.diguage.com)
大页面是提高应用程序性能的简单技巧。Linux 内核中的“透明大页”功能使其更易于使用。JVM 中的“透明大页”支持使其易于选择。尝试大页面总是一个好主意,尤其是当你的应用程序有大量数据和大堆时。
by @技术头条 2024-01-14 19:21 查看详情
JVM 剖析花园:1 - 锁粗化及循环 (www.diguage.com)
虽然锁粗化并不适用于整个循环,但另一种循环优化方法—​循环展开—​为常规锁粗化创造了条件,一旦中间表示开始看起来好像有 N 个相邻的锁-解锁序列,就可以进行锁粗化。这不仅能带来性能上的优势,还有助于限制粗化的范围,避免对过大的循环进行过度粗化。
by @技术头条 2024-01-14 19:21 查看详情
软件开发 | JVM 解释和编译指南 (linux.cn)
Java 是一种跨平台的编程语言。程序源代码会被编译为 字节码bytecode,然后字节码在运行时被转换为 机器码machine code。解释器interpreter 在物理机器上模拟出的抽象计算机上执行字节码指令。即时just-in-time(JIT)编译发生在运行期,而 预先ahead-of-time(AOT)编译发生在构建期。

本文将说明解释器、JIT 和 AOT 分别何时起作用,以及如何在 JIT 和 AOT 之间权衡。
by @技术头条 2023-11-06 22:57 查看详情
Go 语言史诗级更新-循环Bug修复 (crossoverjie.top)
背景前两天 Golang 的官方博客更新了一篇文章:Fixing For Loops in Go 1.22,看这个标题的就是修复了 Go 循环的 bug,这真的是史诗级的更新;我身边接触到的大部分 Go 开发者都犯过这样的错误,包括我自己。
by @技术头条 2023-10-25 00:03 查看详情
关于gradle中plugins依赖未走私服导致编译失败的原因探析 (wiki.eryajf.net)
我们的项目标配使用gradle进行编译,我们也配置了nexus作为私服,理论上来说,不应该再会出现因包依赖的原因导致编译失败的情况,但是这个问题仍旧会偶尔发生,我解决过一两次,只看到通常失败的编译都是在开头的时候去 plugins.gradle.org 拉包的情况,当时将该问题存疑,本文特来探析一下导致这个问题的根因。
by @技术头条 2023-07-02 23:44 查看详情
Redis故障整理-既是热key也是大key导致网卡PPS过高 (www.ipcpu.com)
之前我们遇到过热key,命中了集群中的一组服务器,导致其网卡PPS超出了极限值,经常性出现redis响应变慢的问题。
我们随即对机器和网卡进行了升级,升级成多队列网卡,设置了4个CPU和网卡队里一一对应。
升级完以后,Redis的整体平均响应时间确实变短了,但是仍然会存在一些响应慢的情况出现,经过分析多张监控图的现象,我们发现Redis的QPS一直很稳定。
by @技术头条 2022-12-18 20:02 查看详情
日志导致线程Block的这些坑,你不得不防 (tech.meituan.com)
研发人员在项目开发中不可避免地要使用日志,通过它来记录信息和排查问题。Apache Log4j2提供了灵活且强大的日志框架,虽然上手比较快,但稍有不慎也非常容易踩“坑”。本文介绍了美团统一API网关服务Shepherd在实践中所踩过的关于日志导致线程Block的那些“坑”,以及我们如何从日志框架源码层面进行分析和解决问题的过程,并在最后给大家分享一些关于日志避“坑”的实践经验,希望能给大家带来一些帮助。
by @技术头条 2022-08-18 23:32 查看详情
在IDEA中的各种调试,Bug定位(超级全面) (mp.weixin.qq.com)
在现在的开发中,我们经常采用Debug来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。
by @code小生 2022-02-27 21:00 查看详情