java - 动态内存释放中的完全垃圾收集是什么意思?

标签 java garbage-collection jvm dynamic-memory-allocation

我实际上正在研究服务于 JVM 的不同 GC 的内部结构,即 G1 、 CMS 、 ParallelOld

只是想了解:

What different action GC take when it perform full garbage collection?

Does it Forcefully deallocate memory?

What are situations in which its beneficial for applications?

最佳答案

术语“完整”与“主要”同义,而不是“次要”垃圾收集周期。这些术语与分代垃圾收集方案相关,其中使用一种简单而快速的算法来分配和释放新的和短期对象,而一种更复杂的算法用于旧对象。这个简单的算法用空间换取时间,因为它需要两个大小相等的内存块,其中一个总是空的。针对旧对象的算法做出了相反的权衡。

大多数情况下,仅执行 Minor GC 运行,以释放足够的内存以继续运行,仅偶尔需要运行 Major(完整)GC 来从老一代恢复空间。由于 Full GC 是一个 CPU 密集型、stop-the-world 事件,因此频繁的 Full GC 会影响应用程序性能。

关于java - 动态内存释放中的完全垃圾收集是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23797915/

相关文章:

java - Ant 复制任务 : Failed to copy due to java. io.FileNotFoundException

c# - 正确实现 IDisposable

scala - SBT 测试任务如何管理类路径以及如何从 SBT 测试正确启动 Java 进程

java - 为什么 PermGen Commit 增量这么小?

java - 将 List<Son> 转换为 List<Father>

java - BigInteger 时间最优化的乘法

java - 线程安全并发使用,多个实例?

在 JBoss 上使用 Liferay 时出现 Java 垃圾收集问题 : GC executed many times

Java G1 垃圾收集器生成 Java 不一致?

java - 单例对象是否有资格进行垃圾回收?类中的静态字段如何进行垃圾收集?