Java内存处理
我在Ubuntu服务器上运行Java程序。我使用命令行参数将最大2560MB分配给Java堆,最大128MB分配给Java PermGen。大约一个小时后,我去看看内存使用情况。从Java应用程序内部看,它似乎仍然为堆分配了大约2500 MB,但在ubuntu中,JVM似乎使用了3500 MBJava内存处理,java,memory,Java,Memory,我在Ubuntu服务器上运行Java程序。我使用命令行参数将最大2560MB分配给Java堆,最大128MB分配给Java PermGen。大约一个小时后,我去看看内存使用情况。从Java应用程序内部看,它似乎仍然为堆分配了大约2500 MB,但在ubuntu中,JVM似乎使用了3500 MB 这怎么可能?当然,JVM对堆栈和其他一些小东西的使用不应该超过heap+permgen+。如果它是一个多线程应用程序,每个线程都有自己的堆栈。如果您为线程的堆栈内存提供参数-xss,那么这是很有可能的。您
这怎么可能?当然,JVM对堆栈和其他一些小东西的使用不应该超过heap+permgen+。如果它是一个多线程应用程序,每个线程都有自己的堆栈。如果您为线程的堆栈内存提供参数-xss,那么这是很有可能的。您至少需要几百个线程来占用这么多的堆栈空间。@cHao如果他在服务器端有几百个客户机,并且为每个客户机分配:一个读卡器+一个写卡器+一个工作线程,则可能会发生这种情况thread@matheszabi:嗯。要想设计出这样的设计,就必须浪费线程。但我猜。