如何解决在Play中分析内存使用情况!构架
我有戏!我已经在生产环境中运行了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 举报,一经查实,本站将立刻删除。