Java play 2.4.6应用程序内存使用率高

Java play 2.4.6应用程序内存使用率高,java,scala,memory,memory-management,playframework,Java,Scala,Memory,Memory Management,Playframework,我在Play 2.4.6(Scala)中编写了应用程序。当应用程序部署到生产环境中时,它占用了大约1.4 GB的内存(捕获的RSS顶部)。服务的堆使用量大约为2.5 GB,然后下降到500 MB。起初我怀疑内存泄漏,但堆在一段时间后会被清理。然而,即使堆使用量减少,应用程序使用的剩余内存也没有变化。应用程序的剩余内存使用量不断增加。我无法理解这里出了什么问题。这与某些配置(java内存参数)有关,还是我的代码造成的?如何避免剩余内存使用量的增长 运行应用程序时的堆参数:-J-Xms2G-J-Xm

我在Play 2.4.6(Scala)中编写了应用程序。当应用程序部署到生产环境中时,它占用了大约1.4 GB的内存(捕获的RSS顶部)。
服务的堆使用量大约为2.5 GB,然后下降到500 MB。起初我怀疑内存泄漏,但堆在一段时间后会被清理。
然而,即使堆使用量减少,应用程序使用的剩余内存也没有变化。应用程序的剩余内存使用量不断增加。
我无法理解这里出了什么问题。这与某些配置(java内存参数)有关,还是我的代码造成的?如何避免剩余内存使用量的增长

运行应用程序时的堆参数:-J-Xms2G-J-Xmx8G


注意:我使用的是scala 2.11.8、Java 8和Akka 2.4.4

build.sbt

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.8" 

libraryDependencies ++= Seq( 
  ws, 
  "com.datastax.cassandra" % "cassandra-driver-core" % "2.0.12", 
  "net.databinder.dispatch" %% "dispatch-core" % "0.11.2",
  "org.apache.shiro" % "shiro-core" % "1.2.2", 
  "org.apache.shiro" % "shiro-ehcache" % "1.2.2", 
  "com.typesafe.akka" %% "akka-actor" % "2.4.4", 
  "com.typesafe.akka" %% "akka-slf4j" % "2.4.4", 
  "com.typesafe.akka" %% "akka-contrib" % "2.4.4", 
  "com.typesafe.akka" %% "akka-cluster" % "2.4.4", 
  "com.tuplejump.utils" %% "xformer" % "0.0.1" 
) 

resolvers ++= Seq( 
    "sgodbillon" at "bitbucket.org/sgodbillon/repository/raw/master/snapshots/&q‌​uot;,
    "terracotta" at "terracotta.org/download/reflector/releases"; 
)
plugins.sbt

resolvers += "Typesafe repository" at "repo.typesafe.com/typesafe/releases/";

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6")

你能粘贴你的
plugins.sbt
build.sbt
吗?我不能粘贴它,因为这里没有正确显示新行。lazy val root=(文件中的项目(“.”)。enablePlugins(PlayScala)scalaversation:=“2.11.8”libraryDependencies++=Seq(ws,“com.datasax.cassandra”%”cassandra驱动核心“%”2.0.12”,“net.databinder.dispatch”%%“dispatch core”%%“0.11.2”、“org.apache.shiro”%%“shiro core”%%“1.2.2”、“org.apache.shiro”%%“shiro-ehcache”%%“1.2.2”、“com.typesafe.akka”%%“akka-actor”%%“2.4.4”、“com.typesafe.akka”%%“akka-slf4j”%”“2.4.4”、“com.typesafe.akka-contributb”%%“2.4.4”、“com.typesafe.akka cluster”%%“2.4.4.tuplels”%”“xformer”%“0.0.1”)部分数据您可以编辑您的问题并将这些.sbt内容添加到那里,这样会更可读。在应用程序开始管理任务之前,启动后是否会显示内存使用情况?我会考虑一下您的应用程序在启动时正在做什么。例如,我看到您正在与Cassandra交互-您是否在star上运行任何查询tup?您是否正在将数据写入ehcache?如果是,此数据可能会消耗多少内存?您是否可以粘贴
插件.sbt
build.sbt
?我无法粘贴它,因为新行未正确显示。lazy val root=(文件中的项目(“.”)。enablePlugins(PlayScala)scalaVersion:=“2.11.8”libraryDependencies++=Seq(ws,“com.datasax.cassandra”%“cassandra驱动核心”%“2.0.12”、“net.databinder.dispatch”%“调度核心”%“0.11.2”、“org.apache.shiro”%“shiro核心”%“1.2.2”、“com.typesafe.akka”%“akka演员”%“2.4.4”、“com.typesafe.akka”%“akka-slf4j”%“2.4.4”、“com.typesafe.akka”%“akka”%。”“%”2.4.4“%”com.typesafe.akka“%”akka cluster“%”2.4.4“%”com.tuplejump.utils“%”xformer“%”0.0.1“)部分数据您可以编辑您的问题并将这些.sbt内容添加到那里,这样会更可读。在应用程序开始管理任务之前,启动后是否会显示内存使用情况?我会考虑一下您的应用程序在启动时正在做什么。例如,我看到您正在与Cassandra交互-您是否在star上运行任何查询tup?是否正在将数据写入ehcache?如果是,此数据可能会消耗多少内存?