问题描述
我有戏!我已经在生产环境中运行了3年的框架应用程序。 但是,最近我已将版本从2.5升级到2.8(需要将折旧的功能更改)。在此过程中,我开始使用更多的Akka演员。
但是,现在我在一段时间(2-5天)内用尽了内存,这是以前没有发生的。由于升级是一个很大的重写,所以我不能轻易回去,所以想知道是否容易看出为什么我的内存使用量一直在增加。 )。
我确实添加了15分钟的内存检查并保存了值,下面的图形是结果,清楚地显示了增量结果。
最初,我认为这是新Akka演员创建但未发布的问题。尽管参与者的数量在增加,但在使其中一些成员成为Singleton(他们中没有变量)之后,情况似乎并非如此。
有没有办法查看占用此内存的内容?我希望它具有参考意义,因此不会释放内存,但是很难找到是否有任何线索。
[编辑] 运行MAT之后,似乎akka.actor.ActorCell保留了我发送给客户端的所有JSON数据。这是过程。有没有理由不发布数据?我需要使用Materializer或Source吗?
private void sendDeviceData(List<Device> devices){
ObjectNode response = Json.newObject();
ObjectNode statusScreen = response.putObject("statusScreen");
ArrayNode items = statusScreen.putArray("devices");
for(Device device : devices) {
items.add(Json.parse(device.getStatusJson()));
}
Source<JsonNode,NotUsed> source = Source.single(response);
source.to(hubSink).run(mat);
}
[编辑2] 请在附件中找到转储的屏幕截图。似乎都是出于某种原因嵌套的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)