什么触发了 Java 中的完整垃圾回收?

What triggers a full garbage collection in Java?(什么触发了 Java 中的完整垃圾回收?)
本文介绍了什么触发了 Java 中的完整垃圾回收?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道在 Java 中触发 Full Garbage Collection 的确切情况是什么.

I'm wondering what are the exact situations that trigger Full Garbage Collection in Java.

显而易见的是:

  • 老一代用完了
  • 烫发用完了
  • 调用 System.gc()

其他导致full gc的情况呢?特别是:

What about other cases that cause full gc? Particularly:

  • 幸存者空间中没有足够的可用空间从伊甸园复制对象.
  • 次要集合无法应对新对象的分配率(虽然不知道如何).

我正在运行 Sun Java 1.6 并使用 Concurrent Mark-Sweep 和 ParNew for new gen.

I'm running Sun Java 1.6 and using Concurrent Mark-Sweep and ParNew for new gen.

推荐答案

我观察到另外一种情况,在 Ubuntu 上的 Java Hotspot VM 1.6 64bit 中使用 Concurrent Mark-Sweep 触发完整 GC:

I've observed one more situation that triggers a full GC in Java Hotspot VM 1.6 64bit on Ubuntu, using Concurrent Mark-Sweep:

如果 -XX:PermSize 值不等于 -XX:MaxPermSize(例如更小),当 java 需要扩展 PermGen(即使它不需要分配比 MaxPermSize 更多的内存)时,偶尔会发生 Full GC.因此,将 -XX:PermSize 和 -XX:MaxPermSize 设置为相同似乎是个好主意.

If -XX:PermSize value does not equal to -XX:MaxPermSize (e.g. is smaller), an occasional Full GC happens when java needs to expand the PermGen (even though it does not need to allocate more memory than MaxPermSize). So setting -XX:PermSize and -XX:MaxPermSize to be the same seems like a good idea.

这篇关于什么触发了 Java 中的完整垃圾回收?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How can create a producer using Spring Cloud Kafka Stream 3.1(如何使用Spring Cloud Kafka Stream 3.1创建制片人)
Insert a position in a linked list Java(在链接列表中插入位置Java)
Did I write this constructor properly?(我是否正确地编写了这个构造函数?)
Head value set to null but tail value still gets displayed(Head值设置为空,但仍显示Tail值)
printing nodes from a singly-linked list(打印单链接列表中的节点)
Control namespace prefixes in web services?(控制Web服务中的命名空间前缀?)