我对Java很新。我在此链接中找到了简单方法(没有任何编程)来增加win 7 http://www.wikihow.com/Increase-Java-Memory-in-Windows-7
中指定的JVM内存我的问题:在Win 7 中执行(强制)垃圾收集 是否有类似的方法?我的意思是System.gc()
,但在windows
我需要它在Windows 中,不用进入堆分析的细节和类似的东西
答案 0 :(得分:2)
忘了GC。如果你有OutOfMemoryError
(你的代码中没有任何东西搞砸了你的内存使用情况,因为如果是这种情况你应该先修复它)你需要增加堆大小。
有两个参数可以帮助您:Xmx
和Xms
。第一个是最重要的,因为它定义了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执行相同操作(即归因于更多内存)。