- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两组 HProf 转储,一组用于大样本,另一组用于较小样本 - 两者都来 self 拥有的大量数据中的一个非常小的样本。我正在尝试找出我的方法中的瓶颈。
这是我的大样本 ( http://pastebin.com/PEH8yR3v ) 和小样本 ( http://pastebin.com/aR8ywkDH ) 的堆分配数据。
我注意到 char[] 占用了我大部分的内存。而且 char[] 占用的内存百分比从小样本运行到大样本运行都不同。我不知道当我分析整个样本时它会发生什么变化。
但是,我关心的重要问题是 - 当我尝试运行这个程序(读取、解析/处理、写入)时,它会写回 10GB 的数据,大小为 3GB 的输入数据。除了大小不超过 1GB 的列表外,我不在内存中存储任何内容 - 这是普通的读取、处理、写入管道。鉴于此,我的程序在运行时仍然需要大约 7GB 的主内存。
这是我的方法,
read a file in from a string Iterator
for each line in ip_file perform
op_buffer = myFunction(line)
write op_buffer to op_file.
Perform this for all 20K files in my input data.
def myFunction(line)
{
var :String = null;
for each word in line
{
var class_obj = new Classname(word)
op_line + = class_obj.result
}
return op_line
}
由于,在 myFunction 内创建的对象将在 myFunction 末尾范围扩大,因此我不关心删除/释放它们。你们感觉到任何瓶颈吗?
最佳答案
Since, the objects created inside the myFunction will scope out at the end of myFunction
不,他们不会。这不是 C++。所有对象都在堆上创建并保持存在,直到可进行垃圾回收。
此外,您还没有在伪代码中的任何位置声明 op_line
,因此我假设它在方法调用之间保留,我猜这就是您的内存泄漏。我的意思是,您不可能拥有由 > 1 亿字节组成的单个字符数组,这就是“小”堆转储所说的内容。
关于java - HPROF结果解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882336/
我有一个 java.hprof.txt 文件(在 OutOfMemoryError 后自动生成),我想将其转换为二进制 hprof 格式。有什么简单的方法可以做到这一点吗? 最佳答案 不,没有。您必须
我的测试设备版本是 5.0.1 (Lollipop)。 我在 Android Studio 1.3 中获取了 Android 堆转储文件。 但是我看到了错误信息。 所以我尝试在 DDMS 中获取转储文
尝试使用内存分析器打开 HPROF 文件(由 Debug.dumpHprofData 创建)时出现以下异常: java.io.IOException: Unknown HPROF Version (J
Eclipse Memory Analyzer 文档说它可以打开 IBM 可移植堆转储文件 (*.phd): http://help.eclipse.org/luna/index.jsp?topic=
如果我使用任何 Java 应用程序(例如 VisualVM)打开堆转储(hprof 文件),VisualVM 是否需要比 hprof 文件大小更多的堆内存? 就我而言,hprof 是 4Gb 文件,V
我正在使用 Eclipse Memory Analyzer 查看 HPROF 文件。它为同一类的不同实例显示不同数量的字段: 看起来缺失的字段可能从未被分配过,但是这些缺失字段的值是多少?它们是“零”
我想知道是否有办法“安排”HPROF转储,以便我们可以每天(或每小时,具体取决于大小)生成一个 HPROF 文件。 我的想法是在生产系统上添加分析,并将其作为日常报告的一部分,这样它就成为“例行公事”
目前我有一个核心转储文件,我想提取堆转储。无论我尝试什么,我总是会收到以下错误消息: god@heaven:~$ sudo /opt/java-MyApp/bin/jmap -dump:format=
我在控制台日志中看到以下错误: HPROF ERROR: unable to resolve a method id HPROF ERROR: got NULL trace in obj_alloc
在我的应用程序中,我可以选择捕获 hprof 转储。我使用过 android.os.Debug.dumpHprofData(字符串文件名) 最初我虽然通过上述方法生成的 hprof 数据是用于整个装置
最近,我在运行应用程序时遇到了 java.lang.OutOfMemoryError 异常。 在一个这样的实例中,我能够使用 jvisualvm 获取堆转储。 我可以使用 NetBeans 8.1 I
这个问题在这里已经有了答案: How do I analyze a .hprof file? (7 个答案) 关闭 5 年前。 我正在运行 Java 应用程序并遇到内存不足的错误。 .hprof 文
正如许多有用网站所详述的那样,分析 Android 应用程序内存使用情况的一种方法是执行“kill -10 [PID]”以触发 HPROF 转储。这似乎适用于某些设备,并且 logcat 通常包含如下
我想跟踪我的应用程序的内存泄漏。但是当我想从 DDMS 按下转储 HPROF 文件按钮时,我收到一条错误消息:“hprof:无法打开/sdcard/com.google.android.apps.up
我尝试将转储从 Android Device Monitor 转换为 Eclipse Memory Analyzer 格式。我使用下一个命令 hprof-conv dump.hprof convert
有时,尤其是在我的应用程序中实现新功能时,我会使用 DDMS + HPROF 来分析内存和堆的使用情况。由于该应用程序似乎没有任何性能 - ANR 问题并且一切正常,最初我并不关心它 - 但现在,我看
我有一个非常大的堆转储 (.hprof) 文件 (16GB)。当我尝试在 Visual Vm 中打开它时,VM 只是挂起。我试图在 JProfiler 中打开它。 Jprofiler 给了我一个内存不
我正在尝试以编程方式分析 hprof 文件。使用 android-sdk 中的 hprof-conv 工具,我生成了一堆 com.your.package.index 文件。 如何以编程方式解析这些
我的程序抛出以下异常: java.lang.OutOfMemoryError: unable to create new native thread 但是当我将 -XX:+HeapDumpOnOutO
我正在调查使用 Eclipse 的内存分析器 (MAT) 分析 HPROF 文件。支配树、报告和 OQL 界面看起来非常有用。但所有这些都必须通过 MAT 软件手动完成。 是否有命令行界面,以便我可以
我是一名优秀的程序员,十分优秀!