我是Play框架的新手。我一直在生产模式下运行Play Framework2.7.x。实际上是最简单的代码:
package controllers
import javax.inject._
import play.api._
import play.api.mvc._
@Singleton
class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) {
def index() = Action { implicit request: Request[AnyContent] =>
Ok(views.html.index())
}
}
Run Code Online (Sandbox Code Playgroud)
运行时,我注意到对于每个请求,它都会增加更多的内存使用量。它增加了。在请求增加的阶段,应用程序使用的传入内存达到1Gb。我停止发送请求,但是我注意到该应用程序没有释放任何内存。
我的问题是-这个应用程序会释放它的占用内存吗,有什么方法可以在不重启应用程序的情况下做到这一点?
Play Framework在Java虚拟机(JVM)上运行。JVM通常不会将内存释放回操作系统。可以释放内存,但是这很罕见,例如Java 12引入了JEP 346:从G1迅速返回未使用的承诺内存,但是我不确定这对于小的1 GB堆是否有用。
JVM通常被配置为具有较高的内存使用限制,并且在OutOfMemoryError不可能的情况下会保留在该限制之下或抛出各种错误。您应该配置JVM,以使其对服务器具有可接受的内存限制,并让GC进行工作。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |