摘要: 本文转载自Java对象内存布局 导语 首先直接抛出问题 Unsafe.getInt(obj, fieldOffset)中的fieldOffset是什么, 类似还有compareAndSwapX(obj, fieldOffset, oldValue, newValue)? 如何实现原子读, 原子写的 阅读全文
posted @ 2020-06-20 16:58 Yungyu 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 本文转载自glibc内存管理那些事儿 Linux内存空间简介 32位Linux平台下进程虚拟地址空间分布如下图: 进程虚拟地址空间分布 图中,0xC0000000开始的最高1G空间是内核地址空间,剩下3G空间是用户态空间。用户态空间从上到下依次为stack栈(向下增长)、mmap(匿名文件映射区)、 阅读全文
posted @ 2020-06-20 16:18 Yungyu 阅读(881) 评论(0) 推荐(0) 编辑
摘要: 本文转载自一次"内存泄漏"引发的血案 导语 2017年末,手Q春节红包项目期间,为保障活动期间服务正常稳定,我对性能不佳的Ark Server进行了改造和重写。重编发布一段时间后,结果发现新发布的Svr的机器内存一直在上涨。如下图示: 内存增长趋势图 观察后,第一反应是完了,一定存在内存泄漏。花了3 阅读全文
posted @ 2020-06-20 16:14 Yungyu 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 本文转载自字节码增强技术-Byte Buddy 为什么需要在运行时生成代码? Java 是一个强类型语言系统,要求变量和对象都有一个确定的类型,不兼容类型赋值都会造成转换异常,通常情况下这种错误都会被编译器检查出来,如此严格的类型在大多数情况下是比较令人满意的,这对构建具有非常强可读性和稳定性的应用 阅读全文
posted @ 2020-06-20 01:02 Yungyu 阅读(4549) 评论(0) 推荐(0) 编辑
摘要: 本文转载自Byte Buddy学习笔记 简介 Byte Buddy是一个JVM的运行时代码生成器,你可以利用它创建任何类,且不像JDK动态代理那样强制实现一个接口。Byte Buddy还提供了简单的API,便于手工、通过Java Agent,或者在构建期间修改字节码。 Java反射API可以做很多和 阅读全文
posted @ 2020-06-20 00:37 Yungyu 阅读(3771) 评论(0) 推荐(1) 编辑