我正在尝试在 JAVA 上调整我的一个应用程序。我正在使用 JAVA-Profiler 并从中获得了一些报告。我看到应用程序的页面错误数量从 30000 到 35000 不等。我怎样才能确定这个数字是太高还是正常?我在最初的一分钟和半小时后得到相同的数据。
我的 RAM 是 2 GB,我正在使用单线程应用程序。
线程仅尝试每 3 秒从队列中读取消息,并且队列为空。
由于没有进行任何处理,我认为根本不应该发生页面错误。请在这里指导我。
我正在尝试在 JAVA 上调整我的一个应用程序。我正在使用 JAVA-Profiler 并从中获得了一些报告。我看到应用程序的页面错误数量从 30000 到 35000 不等。我怎样才能确定这个数字是太高还是正常?我在最初的一分钟和半小时后得到相同的数据。
我的 RAM 是 2 GB,我正在使用单线程应用程序。
线程仅尝试每 3 秒从队列中读取消息,并且队列为空。
由于没有进行任何处理,我认为根本不应该发生页面错误。请在这里指导我。
当您启动 JVM 时,它会将最大堆大小保留为连续块。但是,此虚拟内存仅在您访问这些页面时才变为主内存。即每次你的堆增长4 KB,你就会得到一个页面错误。您还将以相同的方式从线程堆栈中获取页面错误。
您的 35K 页面错误表明您正在使用大约 140 MB 的堆。
顺便说一句,您可以花 25 英镑购买 8 GB。你可以考虑升级。
你的JVM是什么?如果是 HotSpot,您可以使用 -XX:LargePageSizeInBytes 或 -XX:+UseMPSS 等 JVM 选项来强制所需的页面大小,以最小化页面交换。我认为其他 JVM 也应该有类似的选项。
看看这个: http ://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html