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

了解Java堆

连曜灿
2023-03-14
问题内容

为了确定Java堆大小,我使用了以下命令:

java -XX:+PrintFlagsFinal -version -h | grep HeapSize 
    uintx ErgoHeapSizeLimit                         = 0               {product}           
    uintx HeapSizePerGCThread                       = 87241520        {product}           
    uintx InitialHeapSize                          := 1586475520      {product}           
    uintx LargePageHeapSizeThreshold                = 134217728       {product}           
    uintx MaxHeapSize                              := 25383927808     {product}           
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

但是,我无法理解ErgoHeapSizeLimit,HeapSizePerGCThread,InitialHeapSize,LargePageHeapSizeThreshold,MaxHeapSize等的含义。有人可以简要解释一下这些术语。其实我是Java的新手

其实我需要确定我的机器可以分配给进程的堆大小吗?因为我的应用程序之一需要以下参数:-server,-Xmx16G或更好,等等。


问题答案:

看看这里(它们是从OpenJDK中提取的):

http://jvm-options.tech.xebia.fr/

ErgoHeapSizeLimit: 符合人体工程学的最大堆大小(以字节为单位);零表示使用MaxRAM / MaxRAMFraction

HeapSizePerGCThread: 用于计算GC线程数的每个GC线程的堆大小(字节)

InitialHeapSize: 初始堆大小(以字节为单位);零表示OldSize + NewSize

LargePageHeapSizeThreshold: 如果最大堆至少为该大页面,则使用大页面

MaxHeapSize: 最大堆大小(以字节为单位)



 类似资料:
  • 问题内容: 有以下代码: 并有输出: 为什么它打印八次而不是“ y”。遇到Java 时如何调用? 问题答案: 在这里您正在捉住,而不是在这种情况下您的程序会崩溃。 如果您尝试此代码(修改为添加静态计数器) 输出量 因此,它已进行了6869次(不同运行次数的更改),并打印了最后一个值。如果您只是像以前那样打印,则可能是输出被缓冲而不被刷新,因为它不是。 更新资料 在内部调用该缓冲。您不会丢失缓冲区中

  • 问题内容: 因此,在昨天的工作中,我不得不编写一个应用程序来计算AFP文件中的页数。因此,我整理了我的MO:DCA规范PDF,找到了结构化字段及其3个字节的标识符。该应用程序需要在AIX机器上运行,所以我决定用Java编写它。 为了获得最大效率,我决定读取每个结构化字段的前6个字节,然后跳过该字段中的其余字节。这会让我: 因此,我检查字段类型,如果是,则增加页面计数器,如果不是,则不增加。然后,我

  • 在忽略Java更新一段时间之后,我现在想从我在某处找到的有点阴暗的Java 10.0.2运行时转移到Java 13。事实证明,在Java 8之后,Oracle停止了“单片”JRE哲学,对于我关于如何进行部署的问题,我似乎找不到任何明确的答案。 以下是我认为保持不变的内容: IDE(eclipse)工作流基本保持不变 现在,我无法理解的棘手部分来了:在其他机器上的部署 创建一个module-info

  • 问题内容: 我正在研究Zeromq作为Java项目中的消息传递解决方案,但是我发现有关Java绑定的说明有些难以遵循。 http://www.zeromq.org/bindings:java 我不熟悉Java绑定,所以这些可能是愚蠢的问题,但是有人可以帮助我理解: 为什么我需要安装任何东西? 我在一台机器上构建的jar可以在另一系统上运行吗?我需要此应用程序具有可移植性。 如果是这样,为什么我需要

  • 问题内容: 我经常卡在没有源的Java类文件中,并且试图理解我手头的问题。 请注意,反编译器是有用的,但在所有情况下都不足够… 我有两个问题 有哪些工具可用来查看Java字节码(最好从linux命令行中获得) 什么是熟悉Java字节码语法的良好参考 问题答案: 与其直接查看Java字节码(需要熟悉Java虚拟机及其操作),不如尝试使用Java反编译实用程序。反编译器将尝试从指定文件创建源文件。 该

  • 问题内容: 我知道使用这种克隆机制并不是一个好主意(因为它被某些作者建议“破了”),尽管我需要帮助来理解它的工作原理。我们得到以下类层次结构: 既然扩展了,如何返回一个实例?实际上是返回对class对象的引用。为什么我们可以将其投射到?有不在班上的成员。默认行为实际上是如何设法自动克隆此变量的(因为该变量在class中没有记录)? 同样,M也是如此。在我们中,将一个对象从class (由返回)转换