gpt4 book ai didi

java - 简单的 CLI Java 程序不断消耗越来越多的内存

转载 作者:行者123 更新时间:2023-12-02 06:47:21 25 4
gpt4 key购买 nike

我编写了这个测试程序。

import java.io.Console;

public class ConsoleTest{

public static void main(String[] args) {
// TODO Auto-generated method stub

Console console = System.console();
System.out.println("ConsoleTest initialising... \n Enter command : ");
String line = "";

if(console!=null){
while ( (line = console.readLine())!= null ){
System.gc();
System.out.println("your input : " + line);

if("exit".equalsIgnoreCase(line)){
System.out.println("Bye ~");
System.exit(0);
}else{
System.out.println("Enter command : ");
}

}
}else{
System.out.println("No console found");
}


}
}



enter image description here
即使在我写这个问题时,我也看到堆内存使用量不断上升,对程序没有任何作用。
另外,每次我单击“执行 GC”按钮时,Windows 任务管理器都会显示该程序正在使用更多内存。
代码有问题吗?或者这是正常行为?



编辑
后来我发现内存堆使用图在较长的时间范围内定期波动。
我不知道为什么会这样做,但我认为这是另一回事。
如果我还能问一件事,我发现 Java 监视器中的堆使用情况与 Windows 任务管理器中显示的内存使用情况之间存在巨大差异。
Java Monitor 中的堆使用情况显示 Eclipse 进程的堆使用量约为 300MB。
在 Windows 任务管理器中,900MB - 左右。
这个差异是因为堆使用量不包括堆栈内存使用量吗?

最佳答案

你所说的内存量可以忽略不计。 JVM 不会费心去处理少量的释放。如果您想看到更有趣的行为,请在请求垃圾收集之前分配然后删除对大块的引用。

关于java - 简单的 CLI Java 程序不断消耗越来越多的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18477947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com