为什么docker容器的内存使用量不会减less?

我在这个容器中使用Apache JavaSpark运行Java REST应用程序,但是我注意到每个请求都添加了内存使用情况,并且在请求完成后不会减less。 我的第一个猜测是,我忘了closures一些stream/缓冲区(这个应用程序处理大量的文件操作),但我回顾了所有的代码,看起来像一切正在closures。

这是我的Dockerfile:

FROM maven:3.5-jdk-8-alpine WORKDIR /code ADD pom.xml /code/pom.xml RUN ["mvn", "dependency:resolve"] ADD src /code/src RUN ["mvn", "package"] EXPOSE 1337 CMD exec java -jar "target/app.jar" 

这里是docker统计:

 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 2db8b2f5fd72 0.16% 66.36 MiB / 1.952 GiB 3.32% 12.9 kB / 106 kB 0 B / 0 B 23 

Java通常会分配先前保留的内存,只有在重新启动进程时才释放它。 你可以看到这个post,给出了完整的解释。

java.exe进程使用更多的内存,不释放它