Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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服务器应用程序在闲置一段时间后运行缓慢(Windows)_Java_Windows_Performance_Optimization_Jvm - Fatal编程技术网

Java服务器应用程序在闲置一段时间后运行缓慢(Windows)

Java服务器应用程序在闲置一段时间后运行缓慢(Windows),java,windows,performance,optimization,jvm,Java,Windows,Performance,Optimization,Jvm,我遇到了Jetty 9服务器应用程序的问题,该应用程序在长时间闲置后似乎进入某种静止状态。通常情况下,Java进程的内存使用量约为500 MB,但在空闲一段时间后,它似乎会降至50 MB以下。第一个请求需要几秒钟才能响应,而请求通常需要几十毫秒。但在一两个请求之后,应用程序似乎回到了正常的响应状态 我正在32位Oracle Java 8 JVM上运行。我的JVM配置非常基本: java -server -jar start.jar 我希望这个问题可以通过JVM配置来解决。有人知道是否有任何特定

我遇到了Jetty 9服务器应用程序的问题,该应用程序在长时间闲置后似乎进入某种静止状态。通常情况下,Java进程的内存使用量约为500 MB,但在空闲一段时间后,它似乎会降至50 MB以下。第一个请求需要几秒钟才能响应,而请求通常需要几十毫秒。但在一两个请求之后,应用程序似乎回到了正常的响应状态

我正在32位Oracle Java 8 JVM上运行。我的JVM配置非常基本:

java -server -jar start.jar
我希望这个问题可以通过JVM配置来解决。有人知道是否有任何特定的参数来禁用这种行为吗


编辑:根据伊万的评论,我能够确定问题的根源。事实证明Windows正在将Java进程的一部分交换到磁盘。有关我的解决方案的描述,请参见下面我自己的答案。

根据Ivan的评论,我能够确定问题的根源。事实证明Windows正在将Java进程的一部分交换到磁盘。在任务管理器中将私有工作集与提交大小进行比较时,这一点是显而易见的

我的解决方案是双重的。首先,我在我的服务器应用程序中做了一个简单的定时作业,每分钟运行一次,并做了一个简单的测试运行,以确保重要的服务不会长时间处于非活动状态。我希望这可以确保Windows不会将相关页面视为非活动页面


之后,我还注意到进程以“低于正常”的优先级执行。因此,我更改了启动服务器的脚本,以确保它继续以“高”优先级运行。这似乎可能会影响交换行为,也可能足以自行解决问题,但我只是在部署了第一个解决方案之后才发现它,所以这一点尚不清楚。在任何情况下,一切似乎都正常工作。

您可以尝试添加
-Xms500m
看起来您的内存被调出(或其他操作系统级别的东西)。请参阅此处的相同问题以了解更多信息,请提供操作系统信息和交换使用情况。