我正在将Java应用程序作为Docker容器部署到内存为16 GB的服务器上。
在Ubuntu18.04.4LTS上,Docker服务器版本为19.03.12。我的Docker映像将openjdk-11作为运行时安装。入口点被定义为:
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]我在没有对CPU和内存进行任何限制的情况下启动容器,但是当堆空间达到8 GB时,应用程序总是与一起死亡。还有其他一些容器在运行,但是系统仍然有3-4 GB的空闲内存.
为什么容器中的JVM被限制为使用8GB内存,尽管它“看到”了整个16 GB的内存呢?如果JVM可以消耗系统提供的内存,那么我必须做什么呢?
发布于 2020-07-28 12:07:48
您可以使用命令行开关来调整JVM可用的堆大小。例如,要设置一个12 4GB的最大堆,为操作系统和其他JVM函数留出4GB,添加命令行参数-Xmx 12G。
没有办法告诉Java它可以使用它想要的内存,或者操作系统安装的那么多-请参阅为什么(Sun) JVM有一个固定的内存使用上限(-Xmx)?。
https://stackoverflow.com/questions/63133649
复制相似问题