Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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内存处理_Java_Memory - Fatal编程技术网

Java内存处理

Java内存处理,java,memory,Java,Memory,我在Ubuntu服务器上运行Java程序。我使用命令行参数将最大2560MB分配给Java堆,最大128MB分配给Java PermGen。大约一个小时后,我去看看内存使用情况。从Java应用程序内部看,它似乎仍然为堆分配了大约2500 MB,但在ubuntu中,JVM似乎使用了3500 MB 这怎么可能?当然,JVM对堆栈和其他一些小东西的使用不应该超过heap+permgen+。如果它是一个多线程应用程序,每个线程都有自己的堆栈。如果您为线程的堆栈内存提供参数-xss,那么这是很有可能的。您

我在Ubuntu服务器上运行Java程序。我使用命令行参数将最大2560MB分配给Java堆,最大128MB分配给Java PermGen。大约一个小时后,我去看看内存使用情况。从Java应用程序内部看,它似乎仍然为堆分配了大约2500 MB,但在ubuntu中,JVM似乎使用了3500 MB


这怎么可能?当然,JVM对堆栈和其他一些小东西的使用不应该超过heap+permgen+。

如果它是一个多线程应用程序,每个线程都有自己的堆栈。如果您为线程的堆栈内存提供参数-xss,那么这是很有可能的。

您至少需要几百个线程来占用这么多的堆栈空间。@cHao如果他在服务器端有几百个客户机,并且为每个客户机分配:一个读卡器+一个写卡器+一个工作线程,则可能会发生这种情况thread@matheszabi:嗯。要想设计出这样的设计,就必须浪费线程。但我猜。