Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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 JVM性能一夜之间触底。怎么搞的?_Java_Jvm - Fatal编程技术网

Java JVM性能一夜之间触底。怎么搞的?

Java JVM性能一夜之间触底。怎么搞的?,java,jvm,Java,Jvm,我不是Java开发人员,但我发现自己今天戴着这顶帽子,所以请容忍我 当我昨晚停止使用文件解析器时,我看到了每秒100k条记录的基准测试——我对此非常满意。今天早上,当我对相同的文件重新运行相同的代码时,我每秒只看到10-12k条记录 第一个想法可能是我改变了一些东西,引入了低效的代码,但我注释掉了比昨晚运行的代码更大的代码,性能仍然糟糕。在这一点上,程序除了读取主循环中的文件外,几乎什么也不做,并且仍然缓慢地读取它们 我让一位同事在自己的机器上运行jar的全功能版本,他看到了我昨晚看到的100k

我不是Java开发人员,但我发现自己今天戴着这顶帽子,所以请容忍我

当我昨晚停止使用文件解析器时,我看到了每秒100k条记录的基准测试——我对此非常满意。今天早上,当我对相同的文件重新运行相同的代码时,我每秒只看到10-12k条记录

第一个想法可能是我改变了一些东西,引入了低效的代码,但我注释掉了比昨晚运行的代码更大的代码,性能仍然糟糕。在这一点上,程序除了读取主循环中的文件外,几乎什么也不做,并且仍然缓慢地读取它们

我让一位同事在自己的机器上运行jar的全功能版本,他看到了我昨晚看到的100k/s性能基准,因此我只能假设我的JVM/工作站出了问题

关于我应该看什么有什么想法吗?当我已经知道库存JVM完全能够完成这项任务时,我会犹豫是否要进行JVM性能调优。我只是不明白昨晚以来发生了什么变化

编辑:我已经重新启动了机器

编辑2:现在是第二天。我启动了我的笔记本电脑并运行了代码,它回到了最初的位置——100k/ps。我昨天查看了Windows的性能监视器,它没有显示异常数量的CPU、RAM或磁盘I/O,所以我真的不知道为什么会发生这种情况


也许我最终会研究JVM调优,以确保我有一致的体验。

问题似乎已经解决

自从发布以来,我做的一件事就是删除Windows页面文件,以防这是一个页面问题。这有帮助,但没有我需要的那么多

产生最大影响的似乎是在JVM启动时将相当大的内存量专用于JVM。我猜JVM可能一直在努力动态分配足够的内存。我现在使用以下参数运行它:

-server -Xmx4096m -Xms4096m
我添加了服务器标志,因为这是一个长期运行的进程,我不关心启动时间,内存参数应该给JVM一个稳定的、静态的4GB内存


此后,我没有遇到任何性能问题。

运行探查器(
jvisualvm
包含在JDK中)。您的计算机可能正忙于某些后台工作,这会占用您的CPU或磁盘。如果所有这些都失败了,旧的“重新启动”答案通常是解决这种奇怪问题的一种方法。请记住,使用的内存越多,以后需要垃圾收集的内存就越多。