只是好奇。如果您有 4Gb 的可用内存,并且每分钟会产生 10k 的垃圾。 GC会每分钟触发一次吗?在我的情况下,最好延迟 GC 或根本不执行它。对于完成此类任务的最佳 GC 有什么想法和想法吗?
最佳答案
不,默认的垃圾收集器(串行GC)只有在内存满了(Eden 空间或老年代空间)时才会运行。
如果您想在您的情况下最小化垃圾收集器的运行时间,请尝试最大化 Eden 空间:
java -Xms2g -Xmx3g -XX:NewSize=500m -XX:MaxNewSize=1024m yourApplication
上述设置,将以 3g 最大内存运行您的应用程序,并且 Eden 空间最大为 1g,因此任何新分配的对象都将存储在该空间中,并且(默认)垃圾收集器在此之前不会运行空间充满了物体。
关于java - 有没有什么办法可以关闭 GC 执行,直到可用内存接近零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9849256/