标签: profiling

使用 jvisualvm 进行内存采样

我正在使用 Java Visual VM 的内存采样功能,但我无法回答以下问题:

  1. 为什么会创建这么多实例?

  2. 为什么这些实例数和字节数不断增加?

例如,我创建了一个非常简单的 Java 程序,如下所示:

public class TestMemory{
    public static void main(String[] args) throws InterruptedException {
        System.out.println("Hello");
        Thread.sleep(60 * 60 * 1000);
    }
} 
Run Code Online (Sandbox Code Playgroud)

我可以在 Java Visual VM 中看到有 611 个类。实例数量不断从 25,000 增加到接近 50,000,然后又回落到 25,000 左右。实例减少的原因可能是由 GC 引起的,但我不知道为什么这些数字如此动态,即使我没有对我的程序做任何事情。

profiling visualvm memory-profiling sampling

3
推荐指数
1
解决办法
2606
查看次数

C++ 分析和优化

我的应用程序的性能有一些问题。我在 Stackoverflow 上找到了这个答案:https : //stackoverflow.com/a/378024/5363

我喜欢。我不太明白的一点是代码优化和分析之间的关系是什么。因为显然有人想要分析优化的代码,但同时在优化过程中会丢失很多信息。那么在调试器中运行优化的代码并按照引用的答案中的建议进入它是否可行?

我在 Linux 下使用带有 gcc 的 CMake,如果这有什么不同的话。

c++ optimization profiling

3
推荐指数
1
解决办法
2511
查看次数

如何在 PostgreSQL 9.2 中分析 plpgsql 函数

我想找到 plpgsql 函数中的瓶颈,所以我正在寻找一个分析器。

如何启用 PostgreSQL 函数分析器?建议加载plugin_profiler.dll库,但它是为 8.3 编写的,而 9.2 中似乎没有这样的东西

我还安装了http://git.postgresql.org/gitweb/?p=pldebugger.git;a=summary(包含在 9.2 中)中描述的调试器,但看不到任何使用它的方法作为分析员。

简单的“RAISE NOTICE”方法对我无效,因为该函数在 < 0.1 ms 内执行,但被多次调用。

postgresql performance profiling plpgsql

3
推荐指数
1
解决办法
2124
查看次数

valgrind/callgrind 可以在发布的可执行 C++ 程序上工作吗?

我知道valgrind可以调用memcheck来进行内存泄漏检查,这种情况下编译出来的C++可执行程序必须包含调试信息。那么,如果我想使用 valgrind/callgrind 来执行分析,可执行文件是否必须包含调试信息?我运行了一个小测试,似乎 valgrind/callgrind 可以在没有调试信息的情况下发布可执行程序。有人可以确认吗?

c++ linux profiling valgrind

3
推荐指数
1
解决办法
4937
查看次数

Visual Studio 2013 无法创建诊断报告

我在 Visual Studio 2013 Update 4 中有一个 64 位项目。当我使用 Visual Studio 的内置 cpu 分析器对其进行分析时,它可以很好地收集数据。但是当我停止分析器时,它说:“Microsoft Visual Studio 无法创建诊断报告。”

输出窗口显示:

Profiling of '[Project name]' started.
[Project name] has exited.
Profiling of '[Project name]' stopped.
Diagnostics session stopped with errors.

An error occurred opening '%temp%\BD371444-95DE-4EF8-9433-A9D00C516579'. The formatting of the file is not supported by this version of Visual Studio. Please try again with a different file or a different version of Visual Studio.
Run Code Online (Sandbox Code Playgroud)

在列出的文件夹中,有 .etl 文件可以使用 Windows 性能分析器打开而不会出错。

我试过修复 Visual Studio 没有效果。

profiling visual-studio visual-studio-2013

3
推荐指数
1
解决办法
2274
查看次数

Btrace 不返回任何内容

所以我向 btrace 介绍自己,但目前我没有从中得到任何输出。使用此脚本:

包 com.sun.btrace.samples;

import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;

@BTrace
public class AllLines {
@OnMethod(
    clazz="/.*/",
    location=@Location(value=Kind.LINE, line=-1)
)
public static void online(@ProbeClassName String pcn, @ProbeMethodName String pmn, int line) {
    print(Strings.strcat(pcn, "."));
    print(Strings.strcat(pmn, ":"));
    println(line);
 } 
}
Run Code Online (Sandbox Code Playgroud)

这直接来自示例目录,只是出于绝望而更改了“clazz =“/。*/”,以打印出一些东西。没运气。

我指向 btrace 的 pid 是一个简单的 java 程序,我开发的只是为了测试目的,它在循环中调用某个方法。我正在通过 Eclipse 运行它。

任何想法我可能会错过什么?谢谢!

更新:打开调试模式,发现它挂在“调试:检查端口可用性:2020”。有任何想法吗 ?

java eclipse profiling btrace

3
推荐指数
1
解决办法
418
查看次数

net/http/pprof 和 runtime/pprof 的区别

我一直在阅读有关此处的分析,它使用net_http_pprof和此处的runtime_pprof 进行了解释。那么,这两者之间有什么区别,哪个应该优先于另一个。并且请不要粘贴给定链接中的概述定义

profiling go

3
推荐指数
1
解决办法
347
查看次数

ScrollRect.LateUpdate() 在分析器中分配 GC 高达 2.4MB 的峰值

跟进我之前关于 Profiler 峰值的问题。我刚刚发现,如果我在 Unity3D 中启用深度配置文件选项,我可以看到GetComponent()调用 underScrollRect.LateUpdate()仅占用 2.4 MB 内存用于仅 5 个Scroll Rect组件的垃圾收集。从以下快照中可以明显看出,UnityComponent.GetComponent()LateUpdate()导致性能问题的方法中调用了 4046 次。我的应用程序是 UI 密集型的,但是 GC 的 2.4MB 根本不可接受。

在此处输入图片说明

通常建议不要GetComponent()在任何更新方法中使用,但 Unity 自己的实现违反了约定。这限制了我在一个场景中可以拥有的 UI 项的数量,以避免性能问题。

请注意,当我激活菜单对象时,此分析数据仅来自框架。

是否有任何解决方法可以减少/节省 2.4MB 的内存?

optimization performance profiling garbage-collection unity-game-engine

3
推荐指数
1
解决办法
1919
查看次数

使用@Duration 注解时,BTrace 提供什么时间单位?米、微米还是纳米?在文档中找不到它

查看方法“methodExit”。参数“@Duration long time”中包含哪些时间单位?

package com.sun.btrace.samples;

import com.sun.btrace.Profiler;
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
import java.awt.EventQueue;
import java.awt.AWTEvent;
import java.awt.event.FocusEvent;

@BTrace
public class AllMethods {

    @OnMethod(
        clazz="java.awt.EventQueue",
        method="dispatchEvent",
        location=@Location(Kind.RETURN))
    public static void methodExit(@Duration long time, @ProbeMethodName String pmn) {
        println(pmn + " " + (time / 1000000));
    }
}
Run Code Online (Sandbox Code Playgroud)

java profiling btrace

3
推荐指数
1
解决办法
273
查看次数

Linux perf 工具 - 如何同时分析多个进程?如何提取 CPU 周期的百分比?

我正在尝试在我的 CPU 上分析一组进程。为了非常精确,我想使用perf stat命令来查看我的进程使用了​​多少 CPU 周期。这与 top 不同,在那里我只看到快照中使用的 CPU 百分比。

不幸的是,我没有找到同时分析多个进程的方法。这可能吗?

作为第二个问题:是否可以不仅看到使用的 CPU 周期,还可以看到在同一时间间隔内使用的 CPU 周期总量(或百分比)?

linux command-line profiling perf

3
推荐指数
1
解决办法
2084
查看次数