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