微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Play中分析内存使用情况!构架

如何解决在Play中分析内存使用情况!构架

我有戏!我已经在生产环境中运行了3年的框架应用程序。 但是,最近我已将版本从2.5升级到2.8(需要将折旧的功能更改)。在此过程中,我开始使用更多的Akka演员。

但是,现在我在一段时间(2-5天)内用尽了内存,这是以前没有发生的。由于升级一个很大的重写,所以我不能轻易回去,所以想知道是否容易看出为什么我的内存使用量一直在增加。 )。

我确实添加了15分钟的内存检查并保存了值,下面的图形是结果,清楚地显示了增量结果。

enter image description here

最初,我认为这是新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] 请在附件中找到转储的屏幕截图。似乎都是出于某种原因嵌套的。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。