Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/Eclipse:Java/Eclipse如何保留堆_Java_Eclipse_Memory_Memory Leaks - Fatal编程技术网

Java/Eclipse:Java/Eclipse如何保留堆

Java/Eclipse:Java/Eclipse如何保留堆,java,eclipse,memory,memory-leaks,Java,Eclipse,Memory,Memory Leaks,我试图诊断实时音频程序中的内存泄漏(或者我认为是内存泄漏),这会导致在调用垃圾收集例程时输出偶尔“断断续续” 在我找到漏洞之前,我试图回到基础并不断地进行阐述,我设计了一个我认为可能是最简单且无漏洞的程序: public class LeakDetect { public static void main(String args[]) { while (true) { System.out.println( Runtime.getRuntime()

我试图诊断实时音频程序中的内存泄漏(或者我认为是内存泄漏),这会导致在调用垃圾收集例程时输出偶尔“断断续续”

在我找到漏洞之前,我试图回到基础并不断地进行阐述,我设计了一个我认为可能是最简单且无漏洞的程序:

public class LeakDetect {
    public static void main(String args[]) {
        while (true) {
            System.out.println( Runtime.getRuntime().freeMemory());
        }
    }
}
想象一下,我惊讶地发现堆空间随着时间慢慢减少(在几秒钟内很容易看到),然后又重新跳起来,即使这里除了打印可用堆内存之外没有其他操作

我从来没有理由对此感到惊讶;这是怎么回事

Java/Eclipse是否确实强制为堆保留了一块内存,然后在幕后做了一些浪费的事情


或者,正如我所怀疑的,其他程序和操作系统功能(Windows 10)是否正在吞噬潜在的可用堆空间,然后操作系统偶尔会释放内存?如果是这样,有没有办法让Java/Eclipse采取更强硬的态度,不让操作系统和其他软件进入它的空间?在Ubuntu下运行会改变答案吗?

Eclipse是一个IDE——它与此无关。即便如此,如果有办法强制执行我所希望的行为,我将通过Eclipse及其JVM配置。抱歉,这不是它的工作方式。JVM在运行时是boss。是的,但我将通过Eclipse设置标志、更改JVM的配置等。类似于在eclipse.ini中设置堆准则。JVM是boss,但由IDE配置,您无法获得它。一旦启动作业,JVM就不知道或不关心这些标志是如何设置的。Eclipse是一个IDE,它与此无关。即使如此,如果有办法强制执行我所希望的行为,我也会检查Eclipse及其JVM配置。抱歉,这不是它的工作方式。JVM在运行时是boss。是的,但我将通过Eclipse设置标志、更改JVM的配置等。类似于在eclipse.ini中设置堆准则。JVM是boss,但由IDE配置,您无法获得它。一旦启动作业,JVM就不知道或不关心这些标志是如何设置的。