如何在win 7中执行垃圾收集?

时间:2015-08-20 14:21:50

标签: java garbage-collection jvm

我对Java很新。我在此链接中找到了简单方法没有任何编程)来增加win 7 http://www.wikihow.com/Increase-Java-Memory-in-Windows-7

中指定的JVM内存

我的问题:在Win 7 中执行(强制)垃圾收集 是否有类似的方法?我的意思是System.gc(),但在windows

我需要它在Windows 中,不用进入堆分析的细节和类似的东西

5 个答案:

答案 0 :(得分:2)

忘了GC。如果你有OutOfMemoryError(你的代码中没有任何东西搞砸了你的内存使用情况,因为如果是这种情况你应该先修复它)你需要增加堆大小。

有两个参数可以帮助您:XmxXms。第一个是最重要的,因为它定义了Java应用程序可以使用的最大内存。第二个定义了初始堆大小,但是如果需要,JVM会增加它,直到它达到最大值。

您可以查看此问题以了解这些参数:What are the Xms and Xmx parameters when starting JVMs?

答案 1 :(得分:1)

您无法强制jvm执行垃圾回收。您只能使用#include <iostream> int global_variable = 8; int& function(void) { return global_variable; } int main(void) { function() = 16; std::cout << global_variable << std::endl; // The global_variable becomes 16! (it was 8); return 0; } 方法或System.gc() 方法申请 为了增加垃圾收集的机会,请使用以下代码:
Runtime.gc()
这将有更高的垃圾收集机会。

答案 2 :(得分:1)

您必须了解Java的第一件事是它与99%的平台无关,因此专门针对Windows提出问题通常是无关紧要的。垃圾收集发生在JVM中,它与运行JVM的操作系统无关。顺便说一句,正如System.gc的文件所解释的那样,没有办法强制立即使用GC:

  

调用gc方法表明Java虚拟机耗费   努力回收未使用的物体以制造记忆   它们目前可用于快速重复使用。当控制返回时   从方法调用中,Java虚拟机已尽最大努力   从所有丢弃的物体中回收空间。

答案 3 :(得分:1)

如果你的意思是命令行你可以做

在Windows上

jmap -histo:live {pid} > nul

在linux上

jmap -histo:live {pid} > /dev/null

这将从命令行触发完整的GC。

除了异国情调的测试用例外,你永远不需要这样做。

答案 4 :(得分:0)

  

如何在win 7中执行垃圾收集?

清空回收站!

开玩笑吧。您链接的教程描述了如何增加归因于Java进程的内存上限。给他们更多的记忆可以让他们跑得更快,因为他们感到内存饥渴。这与触发单个垃圾收集无关。

由于Windows是控制和管理可用内存的操作系统,因此无法对Window执行相同操作(即归因于更多内存)。