Java netty获取堆外内存占用
2023-04-18 14:59:21 时间
在使用了netty的系统中,有时会出现内存泄露的问题,我们就需要去监控这个堆外内存的占用,以排查是否是堆外泄露,下面的代码就是查看堆外内存的。可以写个定时任务,持续调用doReport方法来获取堆外内存。
init方法在项目初始化时调用一次,后续不要重复调用。
netty版本需要4.1以上
import io.netty.util.internal.PlatformDependent;
import org.springframework.stereotype.Component;
import org.springframework.util.ReflectionUtils;
import javax.annotation.PostConstruct;
import java.lang.reflect.Field;
import java.util.concurrent.atomic.AtomicLong;
/**
* @date 2020/10/19 11:14 上午
*/
public class DirectMemoryReporter {
private static final String BUSINESS_KEY = "netty_direct_memory";
private AtomicLong directMemory;
public void init(){
Field field = ReflectionUtils.findField(PlatformDependent.class,"DIRECT_MEMORY_COUNTER");
field.setAccessible(true);
try{
directMemory = ((AtomicLong)field.get(PlatformDependent.class));
}catch (Exception e){
}
}
public void doReport(String processName){
try{
long memoryInb = directMemory.get();
logger.error(processName + "**********" + BUSINESS_KEY + ":" + memoryInb);
}catch (Exception e){
}
}
}
相关文章
- 华为云首席产品官方国伟:全栈云原生技术助力金融突破创新瓶颈
- 早知道早受益,将成趋势的NaaS究竟是什么?
- 消费级GPU成功运行1760亿参数大模型
- 研究表明:数据来源仍然是 AI 的主要瓶颈
- 云上奥运:更高!更快!更强! 2021MAXP全球高性能云计算创新大赛隆重开幕!
- VMware创新网络:从开源协作到现实共赢
- IDC 预测到 2025 年云支出将达到 1.3 万亿美元
- 集成AI和ML 以很大限度地提高运营效率的好处
- 5G承载网里的FlexE,到底是什么?
- 选择性风险可以提高AI的公平性和准确性
- ResearchAndMarkets:2027年全球云计算服务产业规模将达3131亿美元
- 长亭科技新品发布会在北京举行 重构网络防护新体系
- 解读京东零售云mPaaS中Flutter中热重载原理
- 人脸识别案件频发,多模态生物核验能否成为新的“银弹”?
- 风口之下,车企如何掘金万亿级智慧出行市场
- 能源领域物联网边缘计算的挑战和机遇
- 报告:人工智能行业人才紧缺 算法工程师应届生平均月薪超3.2万元
- 开幕在即 2021中国工业互联网大会我们要看谁?
- 博睿数据作为AIOps代表厂商入选《2021年中国ICT技术成熟度曲线报告》
- MLOps:企业是否在重复同样的 DIY 错误?