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

如何从JVM获取堆和permgen的最大大小?

陈宜修
2023-03-14
问题内容

我试图以编程方式找出用于调用我的程序的JVM的最大permgen和最大堆大小,而不是它们当前可用的大小。

有没有办法做到这一点?

我熟悉Java Runtime对象中的方法,但不清楚它们真正提供了什么。

或者,是否有办法询问Eclipse为这两个分配了多少?


问题答案:

试试这个:

MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
mem.getHeapMemoryUsage().getUsed();
mem.getNonHeapMemoryUsage().getUsed();

但是它们仅提供快照数据,而不提供累积值。



 类似资料:
  • 问题内容: 如何从Java程序中获取VM的最小和最大堆大小设置? 问题答案: 最大堆大小: 您可能会发现一些有趣的其他计算:

  • 有很多关于堆大小的帖子和站点,但是没有一个提到在调用JVM时如何找出我可以保留的最大可能堆大小。 任务是用最大可用堆大小xmx=max动态启动我的jvm(这里不需要讨论这个任务的对象!)。 我们可以考虑读取当前可用或空闲的内存,并将该大小用于xms和XMX。但这不起作用。 调用Java程序时: Java-XMS1536M-XMX1536M myApp 导致: 选择您选中的应用程序大约需要的堆。并在

  • 问题内容: 我已经读到 32位Windows上的最大堆大小是〜1.5GB,这是由于JVM需要连续的内存。有人可以解释“连续内存”的概念吗,为什么Windows上最多只有1.5GB? 其次,那么64位Windows上的最大堆大小是什么?为什么与32位Windows上可用的最大堆大小不同? 问题答案: 32位/ 64位部分与Java无关 事实证明,32位系统中的内存位置由32位无符号整数引用。这最多允

  • 问题内容: 当前,在我们的测试环境中,最大和最小JVM堆大小设置为相同的值,基本上与专用服务器计算机为我们的应用程序所允许的大小相同。这是性能最佳的配置,还是给JVM一个更好的范围? 问题答案: 设置- Xms的主要原因是,如果您在启动时需要一定的堆。(防止OutOfMemoryErrors在启动时发生。)如上所述,如果您需要启动堆来匹配最大堆,则是匹配它的最大时间。否则,您将不需要它。只是要求应

  • 我想检查我的应用程序是否很好地获得选项。 java进程在docker容器中运行。 为了做到这一点,我要找到所创建进程的最大堆大小。 null 假设(ngcmx+ogcmx)=()可以吗? https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

  • 我有一个应用程序将失败,如果值设置为低于256k,则Xss堆栈大小将失败,并出现堆栈溢出错误。不幸的是,这与库com有关。太阳组织。阿帕奇。当实例化非常大的XSD验证器时。 现在,的预定义值是我们在某些环境中一直在使用的,并且知道这是导致问题的原因。 出于日志记录的目的,我想知道是否可以通过Java本身获得最大堆栈大小,并在初始化时抛出一个错误,指示提供的堆栈大小不足,而不是让应用程序部署,然后尝