服务器正常都需要关注内存使用情况
常规获取内存使用情况可以使用Runtime或MemoryMXBean
Noark提供了一个内存监控服务,选择了Runtime实现,详情参考
xyz.noark.game.monitor.impl.MemoryMonitorService
在GameServerConfiguration类中添加如下代码
@Bean
public MonitorManager monitorManager() {
MonitorManager manager = new MonitorManager();
manager.addMonitorService(new MemoryMonitorService());
return manager;
}
默认的内存监控服务每隔1分钟打印当前服务器内存使用情况到日志.
2018-09-07 18:05:11.423 [monitor] INFO MemoryMonitorService.java:59 - 最大堆内存=3.55 GB, 已分配=172 MB, 已使用=44.31 MB, 还可用=3.5 GB
2018-09-07 18:06:11.424 [monitor] INFO MemoryMonitorService.java:59 - 最大堆内存=3.55 GB, 已分配=172 MB, 已使用=44.31 MB, 还可用=3.5 GB
2018-09-07 18:07:11.425 [monitor] INFO MemoryMonitorService.java:59 - 最大堆内存=3.55 GB, 已分配=172 MB, 已使用=44.47 MB, 还可用=3.5 GB
2018-09-07 18:08:11.426 [monitor] INFO MemoryMonitorService.java:59 - 最大堆内存=3.55 GB, 已分配=172 MB, 已使用=44.63 MB, 还可用=3.5 GB
2018-09-07 18:09:11.427 [monitor] INFO MemoryMonitorService.java:59 - 最大堆内存=3.55 GB, 已分配=172 MB, 已使用=44.79 MB, 还可用=3.5 GB
如果要扩展上报,可继承此类重构行为逻辑,并添加进监控服务管理器中...