调用System.gc()会重置世代集合的统计数据吗?

Sim*_*eon 0 java garbage-collection

换一种说法:

我需要知道在调用System.gc()对象实例(未收集)之后是否以与调用之前相同的方式在代之间分发System.gc().

谢谢,

Pet*_*rey 5

在Full GC之后,System.gc()可能触发或不触发,

  • 伊甸园空间将是空的,因此那里的任何东西都会被搬出或清理干净.
  • 幸存者空间将对象从具有对象的对象交换到空对象,和
  • Tenured空间将拥有与之前相同的保留对象,但有些可能已被清理,有些可能是新一代的新事物.

简而言之,System.gc()唯一不会在代之间更改对象的时间

  • 它没有做任何事情,因为它被忽略了
  • 自上次完整GC以来,没有创建或丢弃任何对象.

如果这可能是为什么调用System.gc()是邪恶的另一个原因

主要是因为它会影响性能并且你获得的回报很少.注意:RMI可以定期触发完整的收集,以确保清理分布式对象,但它会尽量将其保持在最低限度.