首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有OutOfMemoryError的Java容器

具有OutOfMemoryError的Java容器
EN

Stack Overflow用户
提问于 2020-07-28 11:59:37
回答 2查看 2.8K关注 0票数 2

我正在将Java应用程序作为Docker容器部署到内存为16 GB的服务器上。

在Ubuntu18.04.4LTS上,Docker服务器版本为19.03.12。我的Docker映像将openjdk-11作为运行时安装。入口点被定义为:

代码语言:javascript
复制
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]

我在没有对CPU和内存进行任何限制的情况下启动容器,但是当堆空间达到8 GB时,应用程序总是与一起死亡。还有其他一些容器在运行,但是系统仍然有3-4 GB的空闲内存.

为什么容器中的JVM被限制为使用8GB内存,尽管它“看到”了整个16 GB的内存呢?如果JVM可以消耗系统提供的内存,那么我必须做什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-28 12:07:48

您可以使用命令行开关来调整JVM可用的堆大小。例如,要设置一个12 4GB的最大堆,为操作系统和其他JVM函数留出4GB,添加命令行参数-Xmx 12G

没有办法告诉Java它可以使用它想要的内存,或者操作系统安装的那么多-请参阅为什么(Sun) JVM有一个固定的内存使用上限(-Xmx)?

票数 2
EN

Stack Overflow用户

发布于 2020-07-28 12:08:38

假设JVM将应用程序分配给整个可用内存。事实并非如此。事实上,内存的数量是被刻意限制的--确切的值取决于系统。您可以阅读更多关于确定应用程序这里实际可用内存的信息。

至于如何手动管理您的应用程序能够访问多少emory,请阅读此文章。它很好地解释了JVM参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63133649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档