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

G1GC:如何使用所有空闲内存?

陈弘厚
2023-03-14

我尝试在我的程序中使用G1GC。该程序可在各种内存大小的机器上使用:1Gb内存的VPS(最小)、8Gb内存的桌面、32Gb内存的DS(最大)。我注意到G1GC没有保留更多的内存,即使有很多可用内存(例如,G1GC在我的机器上保留的内存不超过3Gb,总共8Gb/4Gb可用)

另外,我想要一个通用的解决方案。我无法为每种类型的机器创建单独的版本或单独的运行脚本。

共有1个答案

龚盛
2023-03-14

我认为您选择了错误的垃圾收集算法。Java 8文档提供了以下指导:

除非您的应用程序有相当严格的暂停时间要求,否则首先运行应用程序并允许VM选择收集器。如有必要,调整堆大小以提高性能。如果性能仍然达不到您的目标,请使用以下准则作为选择收集器的起点。

>

  • 如果应用程序的数据集较小(最大约为100 MB),则选择带有选项-XX: UseSerialGC的串行收集器。

    如果应用程序将在单处理器上运行,并且没有暂停时间要求,那么让虚拟机选择采集器,或者使用选项-XX:UseSerialGC选择串行采集器。

    如果(a)峰值应用程序性能是第一优先级,并且(b)没有暂停时间要求,或者暂停1秒或更长是可以接受的,那么让虚拟机选择采集器,或者使用-XX:UseParallelGC选择并行采集器。

    如果响应时间比总吞吐量更重要,并且垃圾收集暂停时间必须保持在大约1秒以下,则使用-XX:useConMarkSweepGC-XX:UseG1GC选择并发收集器。

    来源:选择收集器

    根据你的评论,你的目标似乎是获得最佳表现;i、 e.尽量减少GC和相关管理费用的总时间。

    这意味着你最好的选择是:

    • 设置一些性能目标,让JVM来决定哪个收集器是最好的。有关性能目标机制的详细信息,请参阅基于行为的调优材料。
    • 如果只有一个核心,请选择串行GC。
    • 如果您有多个核心,请选择并行GC。

    如果你想要一个一刀切的脚本,不管你的硬件如何,性能目标方法是最好的,尽管这意味着你将无法使用特定于平台的设置来(潜在地)改善JVM的决策。

  •  类似资料:
    • 但当我给它“0”端口时,它在addrinfo结果中保持“0”,这导致每个绑定给我不同的端口号。 我的问题:有没有一种方法告诉getaddrinfo选择一个在所有接口上都是空闲的自由端口,然后将给定的地址绑定到所有接口? 如果没有,有没有其他方法可以找到自由端口号?(不绑定,失败时停止)

    • 问题内容: 我当时的假设是,如果禁用div,那么所有内容也会被禁用。 但是,内容为灰色,但我仍然可以与之交互。 有没有办法做到这一点?(禁用div并同时禁用所有内容) 问题答案: 上述许多答案仅适用于表单元素。禁用任何DIV包括其内容的简单方法是仅禁用鼠标交互。例如: CSS

    • 函数功能:获得设备内存总量 函数方法 free = device.getFreeMemory() 返回值 类型 说明 free string 设备空闲内存,单位:字节 函数用例 free = device.getFreeMemory() dialog(free,5000) 注意事项 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动

    • 运行代码后,我检查http://localhost:8983/solr/#/~cores/core1并看到1000000个索引文档。 然后我添加了另一个核心(以与核心1相似的方式命名为核心2),然后再次运行该作业,这一次,我看到核心2没有显示任何文档,只有核心1仍然显示。 有没有人可以建议一下如何使用solr的内核来分发和存储文档,这样我就可以更快地索引数据,我的假设是,如果增加内核的数量,索引的

    • 本文向大家介绍如何使用JavaScript检测空闲的浏览器选项卡,包括了如何使用JavaScript检测空闲的浏览器选项卡的使用技巧和注意事项,需要的朋友参考一下 在某些情况下,当用户与我们的最终产品或应用程序进行交互时,我们发现自己会执行许多密集的,占用大量CPU的任务。启动轮询器,建立WebSocket连接,甚至加载视频或图片等媒体,都有可能成为性能障碍,尤其是当这些任务在不需要的情况下消耗资

    • 文件系统负责将空闲块分配给文件,因此它必须跟踪磁盘中存在的所有空闲块。 主要有两种方法,使用它们管理磁盘中的空闲块。 1. 位向量 在这种方法中,空闲空间列表被实现为位图向量。 它包含每个位代表每个块的位数。 如果该块为空,则该位为1,否则为0。最初,所有块都是空的,因此位图向量中的每个位都包含1。 随着空间分配的进行,文件系统开始为文件分配块并将各个位设置为。 2. 链接列表 这是空闲空间管理的