我是否必须在Java中手动实现垃圾收集?

问题描述 投票:0回答:2

我已经阅读了一些关于Java中垃圾收集的内容,但是我找不到在代码中处理垃圾收集的“最佳实践”。我应该在使用后将每个变量设置为null,还是只使用默认的垃圾收集器更有效率和高性能?或者在这种情况下我是否必须通过命令行参数配置垃圾收集器?

谢谢你的建议!

java performance garbage-collection jvm command-line-arguments
2个回答
6
投票

不,JVM为您做到了。这就是为什么它是一种具有自动内存管理的语言。如果您愿意,由于性能问题,您可以致电:

Runtime r = Runtime.getRuntime();
r.gc();

但无法保证垃圾收集器将删除未引用的对象。这是对JVM的一个建议。只有你知道自己在做什么。风险自负。

您可以做的是选择适合您需求的垃圾收集器实现。例如,如果您不想回收任何内存,出于测试目的,您可以通过添加epsilon标志来选择XX:+UseEpsilonGC


2
投票

垃圾收集器主要是自己做的工作。你不需要任何东西。但您甚至可以看到垃圾收集器清除JVM内存,如图所示

its not hard to tell where the garbage collector did his job... From https://raw.githubusercontent.com/dsyer/spring-boot-memory-blog/master/manual-gc-web.png

自动垃圾收集是查看堆内存,识别正在使用哪些对象以及哪些对象未被删除以及删除未使用对象的过程。

进一步的信息:Java Garbage Collection Basics

© www.soinside.com 2019 - 2024. All rights reserved.