页面读取 - 内存或编码问题?

时间:2013-01-07 20:22:45

标签: java performance oracle memory-leaks

根据MSDN文档,Page Reads / sec是尝试解决系统问题是否内存不足或编码问题/内存泄漏的好方法。

我正在寻找其他人的一些建议,以及如何找到更多信息。

我在我的机器上运行以下命令(Windows 7. 64 Bit.4GB Ram)

1. InteliJ 10 (Tomcat for my Web Services & JSP for the front end)
2. Oracle 11g

我正在尝试确定问题的原因/位置 - 所以我在JMeter中创建了一个脚本来运行以节省系统一点来创建数据&在系统中搜索数据。

运行性能监视器10分钟,我的数据如下:

Page Reads/Sec (Average): 26.841
Pages Input/Pages Fault = Hard Fault % = 5%
Pages Fault/sec (Avg) = 2300
MSDN表示,超过5页读数/秒的持续值通常是内存短缺的一个强有力的指标,但这是一个持续的价值,而不是平均值。它飙升了几次,但长期来看似乎在0-3之间,有几个峰值达到很大。

我认为内存泄漏可能是问题;但是,在检查代码并检查流已关闭(文件/输入/数据库连接/等)之后,我不太确定。

此数据是否更多地指向内存不足,服务中的内存泄漏或配置问题?

编辑1:看堆

我目前只能访问我的开发系统,而不能访问生产。需要与其他人协调才能让我访问日志&在系统上使用jvisualVM。

但是,我确实在上周和今天对开发系统进行了一些堆积。课堂用法中没有什么可以减去String&炭[]。看看显示器我的开发中的堆积是463,863,最大值是480.使用的焊剂在415到450之间。

使用Eclipse Memory Analyzer和heapdump上的“疑似泄漏报告”显示了3个问题嫌疑人。

 1. One instanceo f "org.apache.jasper.servlet.JspServlet" loaded by "org.apache.catalina.loader.StandardClassLoader"  Occupies 18.70%  The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Segment[]

 2. The thread org.apache.tomcat.util.threads.TaskThread @ http-apr-8080-exec-19 keeps local variables with total size 12.30%.  The memory is accumulated in one instance of "org.apache.tomcat.util.threads.TaskThread" loaded by "org.apache.catalina.loader.StandardClassLoader"

 3. The thread org.apache.tomcat.util.threads.TaskThread @http-apr-8080-exec-24 keeps local variables with total size 10.72%.  The m emory is accumulated in one instance of "org.apache.tomcat.util.threads.TaskThread'  loaded by "org.apache.catalina.loader.StandardClassLoader"

我有一种印象(可能是错的),其中一些是正常的,因为TomCat最初需要加载很多东西并存储它。

2 个答案:

答案 0 :(得分:2)

您可以做的一件事是查看任务管理器并观察与Java相关的进程占用多少内存。

总结所有私有工作集内存,比如前10个内存密集型进程(无论它们是否与Java相关)。如果此值接近或大于物理内存容量的75%, OR 如果您运行的是禁用PAE的32位操作系统(您没有说明您的操作系统),它可能是物理内存限制。

如果您的私人工作总和使用的物理内存少于物理内存总量,则可能与此无关。它也可能是与Oracle数据库相关的重磁盘I / O;更多内存将允许您的系统将磁盘页面缓存在RAM中,这大大加快了读取速度,因为它将RAM视为一种磁盘(但RAM比硬盘快20到50倍)。

答案 1 :(得分:0)

如果您正在诊断Oracle数据库MSDN是一个非常糟糕的指导来源:SQL Server的体系结构太不相同了。你应该阅读the Concepts manual

Oracle中的数据字典具有v iews which provide various insights into the performance of the system。与你现在相关的是V $ SGA_TARGET_ADVICE;这将显示增加或减少系统内存的预测效果。 ˚Find out more