- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个大型、内存密集型、基于 Java 的 Web 应用程序,它具有许多不同的功能,需要花费很长时间来进行分析。我认为一种更省时的方法是在离线模式下运行 JProfiler 并设置触发器来为我捕获数据,而不是使用不同的测试数据手动分析整个应用程序中的每个功能。测试团队将正常使用该软件,随着时间的推移,JProfiler 将捕获内存密集型热点,我们可以使用这些热点来提高应用程序的效率。
但是,如果我设置一个触发器来拍摄堆快照,那么它只会给我浅层内存——每个类的内存统计信息,不包括它包含的任何引用的对象。但了解 String 或 char[] 实例消耗了多少内存对我来说没有用。我真正想知道的是我的类的保留内存——每个实例的浅层大小加上它包含的所有类的内存。换句话说,对于我的软件中的每个类,我想知道当其所有实例都被垃圾收集时将释放多少内存。
所以基本上我有几个问题:
1)JProfiler可以只触发快照而不记录内存来计算保留内存吗?看来你必须实际执行“记录内存”操作来计算保留的内存,但我可能遗漏了一些东西。
2)如果我必须记录内存来计算保留的内存信息,那么我的下一个想法是设置一个触发器,当总体内存达到某个阈值时记录信息。但这又提出了两个问题:如何设置触发器来停止录制并拍摄快照?由于我们已经超过了触发器中指定的阈值,录制会不会错过最重要的内存信息?
上面的第二点让我相信,最好的分析方法是触发快照,而不对保留内存进行任何记录和计算——只有浅内存。但是,如果浅层内存显示我的大部分内存使用量都在 char[] 中(确实如此),我怎样才能从中获取有用的信息呢?这如何帮助我跟踪应用程序的内存密集型区域?
非常感谢任何帮助
最佳答案
1) Can JProfiler calculate the retained memory by just triggering snapshots without recording the memory? It seems that you have to actually perform the "record memory" action to calculate the retained memory, but I might be missing something.
您实际上需要“触发堆转储”操作,然后堆遍历器将可用。启用“分配数据”的“开始记录”操作会记录实时 View 的数据(其中仅提供浅层大小),但它也为堆遍历器的“分配” View 提供数据,以便您可以分析对象的分配位置。
And won't the recording miss the most important memory information since we're already past the threshold specified in the trigger?
堆转储会在触发触发器时捕获整个堆,因此您应该看到所有感兴趣的对象。
关于java - 如何使用触发器在 JProfiler 离线模式下进行分析时自动获取保留内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22665096/
嗨,我是 Jprofiler 和 Linux 的新手。 我正在尝试从安装在 Windows 机器上的 Jprofiler 远程分析监控安装在 linux 机器上的 Apache Tomcat 服务器。
当使用 JProbe 进行性能分析时,您可以查看每一行特定方法所花费的时间。 JProfiler 中是否有等效的功能? 最佳答案 没有源代码 View ,您可以在其中查看每一行以及相关的时间测量值。不
考虑以下方法模板: methodA() { Print (abc); // Instruction 1 Calculate(a+b+c); // Instruction 2 Call metho
背景:我们构建了一个产品,通过注释和自定义类加载器向 Java 添加各种功能(事务、基于共享内存的对象持久性、索引和查询、基于集群的高可用性和复制)。这些功能的大部分实现都在 C++ 库中,这些库可通
我尝试将 JProfiler 与 Intellij IDEA 一起使用,但它不断抛出带有这些消息的错误对话框, Connection Error A different version of JPro
JProfiler 中的 Net IO 时间是什么意思? JProfilerguide 说以下内容,但我不知道它到底是什么意思?是花在网络上的时间还是等待网络的时间?如果网络 io 时间过长该怎么解决
当我使用 jmap 创建转储时 jmap -J-d64 -heap:format=b ${pid} 我可以在 JProfiler 中以某种方式打开生成的 heap.bin 吗? 最佳答案 显然这很简单
JProfiler 中的 Net IO 时间是什么意思? JProfilerguide 说以下内容,但我不知道它到底是什么意思?是花在网络上的时间还是等待网络的时间?如果网络 io 时间过长该怎么解决
在过去的几天里,我一直在使用 JProfiler 来分析本地运行的 Websphere 7 服务器(从 RAD8 中)。我已经使用 JProfiler 的服务器集成功能连接到 WAS 实例。 我现在想
我正在尝试分析在 ubuntu 上运行 tomcat7 的远程服务器。我已阅读多个教程,但无法运行它。 远程服务器上的 JProfiler 集成 首先我下载 jprofiler9并在远程系统上提取。
我有安装 jprofiler 的 Linux 系统。 我必须对位于同一 Linux 系统上的一台正在运行的服务器和一台客户端进行分析。我正在从客户端向服务器发送 100 多个不同的请求。 我的查询是:
我使用 CPU View 来检查性能。 有人可以建议“直接调用过滤类的方法”是什么意思吗? 我无法上传屏幕截图。 它就像这样: “91.5% -60,324ms -14inv.direct 调用过滤类
我正在 JProfiler 中运行示例程序。然后我对类遥测中的遥测行“非 cpu 分析类”感到困惑。它是指示例程序的类吗? 最佳答案 “非 CPU 分析”类是那些不包含在过滤器设置中的类。对于示例 s
我是 JProfiler 的新手。我创建了一个非常简单的测试应用程序。这是带有 main 方法的 Main.java: package com.example; import java.io.IOEx
我正在尝试在 Tomcat 和 Oracle Weblogic 上的 win64 上运行 JProfiler。运行向导后,它卡在了线上 “等待 JProfiler GUI 连接” 另一方面,GUI 正
我正在尝试分析我的 Android 应用程序。我通过安装 JProfiler 插件 IntelliJ IDEA --> Preferences --> Plugins 这是插件描述的屏幕截图: 当我尝
我的应用程序需要大约 10 GB 的 RAM 用于特定输入,而对于常规输入,大约 1 GB 就足够了。使用 JProfiler 进行更仔细的分析表明(GC 之后)相当多的内存被 java.util.*
我们在 JProfiler 7.1.1 中遇到了一个奇怪的问题,它显示给定 HTTP 请求的运行时间与通过 Firebug 或手动测试获得的运行时间完全不同 - 2.5 秒对 7.5 秒。使用默认 s
我有 WebSphere 7 应用服务器。安装了 Java VM 1.6。 Linux. Java 版本“1.6.0”Java(TM) SE 运行时环境 (build pxa6460sr10fp1-2
我正在使用调用堆栈拆分来分析单个方法调用和传递的参数。但是,我一直遇到拆分上限限制,此时调用合并在一起,并且有一个选项可以“重置拆分上限计数器”。 这是没用的,因为重新加载树会遇到相同的拆分上限并再次
我是一名优秀的程序员,十分优秀!