我不是Java开发人员,但今天我发现自己戴着那顶帽子,所以请耐心等待。
当我昨晚停止处理文件解析器时,我看到每秒100k记录的基准 - 我非常满意。当我今天早上针对相同的文件重新运行相同的代码时,我每秒只能看到10-12k的记录。
首先想到的是我改变了一些东西并引入了效率低下的代码,但我已经评论了大量的代码,而不是昨晚的代码,性能仍然很糟糕。此时,除了主循环中的读取文件之外,程序几乎什么都不做,并且仍然会慢慢读取它们。
我有一个同事在他自己的机器上运行jar的全功能版本,他看到我昨晚看到的100k / s性能基准测试,所以我只能假设我的JVM /工作站有问题。 / p>
关于我应该关注什么的任何想法或想法?当我已经知道库存JVM能够完成这项任务时,我对进入JVM性能调优犹豫不决。我只是不明白自昨晚以来发生了什么变化。
编辑:我重启了机器。 编辑2:现在是第二天。我启动了我的笔记本电脑并运行了代码,它回到了原来的位置--100k / ps。我检查了Windows'性能监视器昨天并没有显示异常数量的CPU,RAM或磁盘I / O,所以我真的不知道为什么会发生这种情况。也许我会考虑JVM调优,只是为了确保我有一致的体验。
答案 0 :(得分:0)
问题似乎已得到解决。
自发布以来,我所做的一件事就是消除Windows页面文件,以防这是分页问题。它帮助但不是我需要的那么多。
似乎最大的影响是在发布时为JVM提供了大量内存。我猜测JVM可能一直在努力动态分配足够的内存。我现在使用以下参数运行它:
-server -Xmx4096m -Xms4096m
我添加了服务器标志,因为这是一个长时间运行的过程,我不关心启动时间,内存参数应该给JVM一个稳定的,静态的4GB内存来工作用。
我从那时起就没有任何性能问题。