Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM何时会触发主要的垃圾收集?_Java_Memory Management_Garbage Collection_Jvm - Fatal编程技术网

Java JVM何时会触发主要的垃圾收集?

Java JVM何时会触发主要的垃圾收集?,java,memory-management,garbage-collection,jvm,Java,Memory Management,Garbage Collection,Jvm,我试图了解垃圾收集是如何工作的。我很清楚以下几点: 当JVM无法将对象分配给服务器时,它将触发次要GC 年轻一代 列表项 当 堆满了 但是,年轻一代和老一代中不再引用、符合GC条件但没有触发GC的对象如何(即年轻/老一代堆空间未满,因此没有GC发生) 这是否意味着在GC发生之前,这些对象将保留在年轻/老一代堆空间中 我的阅读材料 是,如果没有GC,则对象将存在于堆中 实际上,即使是在GC对象在年轻一代时也会存在于堆中,直到它被覆盖为止,如果是旧的,则取决于算法——但这仅从安全角度来看是有

我试图了解垃圾收集是如何工作的。我很清楚以下几点:

  • 当JVM无法将对象分配给服务器时,它将触发次要GC 年轻一代
  • 列表项
  • 当 堆满了

    但是,年轻一代和老一代中不再引用、符合GC条件但没有触发GC的对象如何(即年轻/老一代堆空间未满,因此没有GC发生)

    这是否意味着在GC发生之前,这些对象将保留在年轻/老一代堆空间中

    我的阅读材料


    是,如果没有GC,则对象将存在于堆中

    实际上,即使是在GC对象在年轻一代时也会存在于堆中,直到它被覆盖为止,如果是旧的,则取决于算法——但这仅从安全角度来看是有趣的

    它仍然保留在旧一代中,并且在出现完整/主要GC之前,堆的总体使用率一直在增加。ops团队正在监视堆的使用情况,他们关心不断增长的堆

    如果您的目标是监视活动对象的数量,例如检测泄漏,那么您应该在主要GC之后立即测量堆占用率,而不是在它们之间

    例如,可以从GC日志文件中提取信息

    当堆满时,JVM将触发完全GC(次要GC和主要GC)


    情况未必如此。何时触发收集的决策基于启发式算法,该算法考虑了各种目标,例如暂停时间和吞吐量。

    您指的是哪种GC算法?每个算法都有自己的阈值来触发主要GC。假设它是默认选项?并行GC?这可能会有帮助:它没有解释主要GC发生的时间和方式。上一个链接给出了分配是如何发生的,如果您正在查找何时触发收集,此链接可能会有帮助(仅适用于CMS收集器,其他收集器可能有自己的策略,您可以参考他们的文档)由于大多数对象都是短期的,并且存在于年轻一代堆空间中,次要的GC会频繁出现,但是对于老一代堆空间,它会不会开始累积,直到它完全填满,并且它自己触发一个主要/完整的GC?是的,老一代堆空间正在日益增加,但是它还没有引起主要GC。我可以通过WebLogic触发主要GC启动,并在手动主要GC之前/之后进行堆转储吗?在使用jmat转储时是否应该包含live参数?i、 e.jmat-dump:liveformat=b,file=在本例中,我是否应该成为不断增长的旧一代堆的关注点?我担心的是发生了内存泄漏。如果你看到没有主要的GCs,那么这并不意味着你有泄漏,这意味着你允许JVM使用比它需要的更多的内存,它决定使用它来避免支付GCs的费用。在这种情况下,我应该继续执行堆转储还是使用旧的生成空间算法-XX:+UseParNewGC-XX:+UseConcMarkSweepGC来减轻操作团队对JVM将耗尽内存的担忧?