当前位置: 首页 > 知识库问答 >
问题:

是否存在与Openshift/Kubernetes中的“限制”不同的“初始内存分配”?

柴瀚昂
2023-03-14

在java中,您有最小堆空间(-Xms)和最大堆空间(-Xmx)。最小堆空间从一开始就分配给JVM,“最大堆空间”是JVM到达它时会说“超出堆空间”的限制。

Openshift/Kubernetes中的pod是否有如此不同的值(初始值和限制值),或者由于某种原因,初始内存分配总是等于限制值?

共有2个答案

毕衡
2023-03-14

在K8s中,资源被定义为请求和限制。请求用于初始分配,当pod达到内存限制时,它将获得OOMKILLED,然后将重新启动,因此我认为它的行为与您描述的相同。

燕野
2023-03-14

对于现代Java版本(支持UseContainerSupport的版本),K8s或Openshift Pod中的堆分配取决于容器可用的内存。

这完全由“containers.resources.limits.memory”值决定(如您所推测的)。其他值,例如“containers.resources.requests.memory”在此不起作用。如果没有设置资源限制,则相应集群节点的整个内存将用于初始堆大小人机工程学,这是OOM终止的可靠方法。

 类似资料:
  • 我在一个吊舱内运行一个Spring靴,配置如下。 吊舱限制: 命令参数: 如果java进程达到其最大堆限制(即1600m(Xmx1600m))会发生什么 如果Xmx对pod内的java进程没有影响,它可以上升到pod限制右(即内存:限制部分的2500Mi) 如果上面的配置是正确的,那么我们就是在浪费900Mi的内存权(2500-1600=900)

  • 问题内容: 在Java中,声明类级别的实例变量而不初始化它会消耗内存吗? 例如:如果不使用初始化内存,是否使用任何内存? 细节: 我有一个巨大的超类,许多不同的子类(不足以拥有自己的超类)扩展了。某些子类不会使用超类声明的每个原语。我可以简单地将这些原语保留为未初始化状态,而仅在必要的子类中对其进行初始化以节省内存吗? 问题答案: 类中定义的所有成员都具有默认值,即使您没有显式初始化它们也是如此,

  • 我有一个SpringSAML应用程序,用户将在第一次登录时从idp启动,在管理器覆盖屏幕期间,sp将启动管理器对idp的sso请求。在这种情况下,浏览器将存储基本用户和他的管理器的两个idp cookie会话,或者管理器的sso idp cookie会话将覆盖现有的基本用户sso cookie会话? 两个用户使用相同的idp提供程序(例如:Okta) 我在网上搜索了很多,没有一个答案。 好心的建议

  • 问题内容: 我们可以拥有任何大小的Java对象而不必担心异常吗?我将使用一个类的对象,该类由成千上万个包含s和s以及许多其他非原始类型的其他对象组成。 谢谢 问题答案: Java Heap是对您可以在系统中拥有的对象大小的限制。 如果对象的大小超出堆大小,则会生成“内存不足”错误。 在您的情况下,总对象的大小(ArrayList中的对象+系统中其他对象)的重要性更大,因为ArrayList只是引用

  • 当我尝试使用Composer客户端将软件包安装到Contao时,我收到一个错误: 致命错误:第220行的phar://D:/wamp/www/myproject/composer/composer.phar/src/composer/dependencysolver/Solver.php中允许的内存大小为1073741824字节(尝试分配134217728字节) 我真的很困惑。我的PHP内存限制设

  • 问题内容: 我编写了一个简单的程序,在free()之后测试动态分配的内存的内容,如下所示。(我知道释放后我们不应该访问该内存。我编写此代码是为了检查释放后内存中将存在什么) 输出:3 0 我以为它将通过第二个打印语句打印垃圾值或崩溃。但是它总是打印0。 1)这种行为是否取决于编译器? 2)如果我尝试使用free()两次释放内存,则会生成核心转储。在手册页中,提到程序行为异常。但是我一直在获得核心转