当前位置: 首页 > 面试题库 >

Java堆Xms和Linux可用内存不同

益和雅
2023-03-14
问题内容

我在centos Box中运行了一个Java程序。我的-Xmx和-Xms设置为4000 Mb。

该程序工作正常。

但是当我执行free -m时,已用内存显示为506 MB。据我了解,XMS内存应为JVM保留。Why does free command not showing the java used memory ?

我也做了jstat -gccapacity $(pidof java),并且更新了NGCMN和NGCMX并具有相同的值?任何支持都会有所帮助。我正在以
java -Xms41000m -Xmx42000m -jar* 运行程序 *


问题答案:

即使将-Xmx-Xms设置为相同的值,为Java Heap保留的空间也不会立即在RAM中分配。

操作系统通常仅在首次访问虚拟页面时才延迟分配物理内存。因此,虽然未触及Java Heap的未使用部分,但它实际上不会消耗内存。

您可以使用-XX:+AlwaysPreTouch选项强行触摸JVM启动时的所有堆页面。



 类似资料:
  • 我是刚到爪哇的。我只是试图了解如何处理堆内存溢出及其原因。有人能在下面的代码中帮助我为什么它会抛出这个错误吗。我怎么能避免。 错误: 线程“main”Java.lang.OutOfMemoryError中出现异常:Java.util.arrays.copyof(arrays.Java:2361)在Java.lang.AbstractStringBuilder.ExpandCapacity(Abst

  • 问题内容: 是局部变量,将其存储在堆或堆栈中的何处? 问题答案: 在堆上。每当您用来创建对象时,它都会在堆上分配。

  • 如何通过命令行检查Linux上Java应用程序的堆大小(和使用的内存)? 我已经通过jmap试过了。但它提供了信息。关于Eden/PermGen等内部记忆区域,这对我来说没用。 我在寻找这样的东西: 最大内存:1GB 这就是全部。我知道我可以在JConsole等中看到这一点,但我需要通过命令行来实现。(无法启用JMX等)

  • 本文向大家介绍java 中堆内存和栈内存理解,包括了java 中堆内存和栈内存理解的使用技巧和注意事项,需要的朋友参考一下  Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存

  • 我编写的java应用程序遇到了一个问题,导致硬件性能问题。问题(我很确定)是,我运行应用程序的一些机器只有1GB的内存。当我启动java应用程序时,我将堆大小设置为-xms512m-xmx1024m。 我的第一个问题是,我的假设是否正确,因为我将机器的所有内存分配给java堆,这显然会导致性能问题?

  • 我有一个用params运行的java应用程序,有人能解释一下为什么VCZ是3800076,而RSS是241304(这是更多的java params) 在命令中: