精华内容
下载资源
问答
  • 本文是一个静态代码分析工具的清单,共有30个工具。包括4个.NET工具、2个Ada工具、7个C++工具、4个Java工具、2个JavaScript工具、1个Opa工具、2个Packaging工具、3个Perl工具、1个Python工具、1个嵌入式工具、2个二...

         

         本文是一个静态代码分析工具的清单,共有30个工具。包括4个.NET工具、2个Ada工具、7个C++工具、4个Java工具、2个JavaScript工具、1个Opa工具、2个Packaging工具、3个Perl工具、1个Python工具、1个嵌入式工具、2个二进制工具、1个静态分析工具


    Fortify SCA


           Fortify SCA 是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理报告。扫描的结果中不但包括详细的安全漏洞的信息,还会有相关的安全知识的说明,以及修复意见的提供

        

             官网:https://fortify.com/


    • Coverity源代码缺陷检测工具
    •        Coverity能够准确识别出研发工作流中的严重质量缺陷,并且提供可行的修正建议来降低软件错误和安全漏洞的修复成本、时间和风险。Coverity可使用高级源码分析技术在非常复杂的C、C++、Java、Objective-C、Javascript及C#码库中发现最严重的质量缺陷和安全漏洞, Coverity是第一个能够快速、准确分析当今的大规模(几百万、甚至几千万行的代码)、高复杂度代码的工具,Coverity解决了影响源代码分析有效性的很多关键问题:构建集成、编译兼容性、高误报率、有效的错误根源分析等。

         

       官网:https://coverity.com

      ProteCode二级制代码扫描工具

        ProteCode可对应用程序和固件进行扫描,并列出所含代码和库文件相关的软件许可及对应的已知漏洞。ProteCode不仅能揭示开源的和私有的第三方代码和库文件,还能够枚举出对应的CVE(Common Vulnerabilities and Exposures)标识符以及相关的软件许可证。将编译好的二进制文件上传(不需要源代码),仅需花费几分钟时间就可以揭示出你所需要的软件内部运行的信息。解决方案有助于研发团队安全无误地使用和管控第三方代码。在开发和测试流程或法律合规部门管理由于使用第三方代码所产生的风险,其中包括开源、内部开发、外包和商业代码。


      Hex-Rays二进制分析工具

      ­­ 荷兰Hex-Rays公司的二进制分析工具能够将二进制代码转换成分析员们容易可以读取和修改的文本,帮助分析员分析和验证的程序,更快捷的判断软件的有用性和可用性,定位安全问题。


      .NET

      .NET Compiler Platform(代号 Roslyn)

      Roslyn提供有着丰富的代码分析API的开源C#和Visual Basic编译器。它可以使用这些Visual Studio里的API生成代码分析工具。

            官网:https://roslyn.codeplex.com/

      CodeIt.Right

      CodeIt.Right提供一个快速的自动的方法确保你的源代码遵循预先定义的设计和风格准则。它通过以下方式使静态代码分析进入更高水平:即时代码审查、及早发现问题、编码原则、自动代码审查、集成StyleCop检查、报告。


      FxCop

      一个实现.NET静态代码分析的图形用户接口和命令行工具。

      FxCop提供几百种规则实现各种类型的分析。包括:设计、全球化、互操作性、可维护性、灵活性、命名、性能、可移植性、可靠性、安全性,利用率。FxCop的功能完全集成到Visual Studio2010的高级版和最终版中。


      StyleCop

      StyleCop分析C#源代码,强制执行一系列风格和一致性规则。可以在Visual Studio内部运行,也可以集成到MSBuild项目中。StyleCop还可以被集成到很多第三方开发工具中。

      核心原则:

      StyleCop通过为C#代码强制执行一组通用风格规则来体现价值。StyleCop将继续利用一个连续的带有允许的最小规则配置的规则集。开发者可以实现他们自己的规则,只要他们愿意。

      StyleCop拥有和Visual Studio、MSBuild,TFS等无缝集成的能力。开发者可以自由执行自定义代码,将StyleCop集成到其他开发和工具环境,如SDK文档中所述。


       Ada

      AdaControl

      AdaControl是一个免费的(授权)工具,可以检测Ada程序中使用的各种结构。它的首要目标是控制风格和程序规则的正确使用,但是它也可以作为一个强大的工具搜索编程风格或设计模式的各种形式。搜索的元素范围有非常简单的,比如某种实体、声明或语句的出现,也有非常复杂的,比如验证遵守了某种编程模式。


      Fluctuat

      Fluctuat是一抽象解释器,以数字编程(C或Ada)静态分析器为基础,由CEA-LIST的ME ASI(ModElling and Analysis of Systems in Interaction)实验室在2001年开发。给出一组输入和参数,可能带有不确定因素,它会考虑这个程序所有可能的行为,无论是真实的还是有限精度下,并描述这些不同的特性。


       C,C++

      BLAST

      BLAST(Berkeley Lazy Abstraction Software verification Tool伯克利惰性抽象软件验证工具)是一个C语言静态软件验证工具,它可以解决可达性问题,例如是否可以通过一个有效的执行命令从入口点(主程序)到达给定的程序位置。

      安全属性的验证可能降低到可达性,BLAST常常用于核查Linux驱动程序验证项目。

      可以在以下网站下载Linux系统的BLAST源代码或二进制版本。


      Cpplint

      这个项目继续开发cpplint,它是一个C++风格检查器,遵循Google的C++风格指南。提供的cpplint 为PYPI(Python Package Index)包,并添加了几个功能和修复程序。它是google/styleguide的一个分支,希望未来可以合并在一起。


      Coccinelle

      Coccinelle是一个程序匹配和转换引擎。它提供语意修补程序以便在C代码中指定期望的匹配和转换。Coccinelle初始的目的是完成Linux的间接开发。这种开发包括客户端代码中所需要的改变,目的是响应库应用程序接口变化。还可能包括一些修改,例如重命名一个函数、添加一个函数参数,它的值以某种方式被上下文决定、重组数据结构。除了间接开发,Coccinelle还可以成功的寻找和修复系统代码中的错误。


      Frama-C

      Frama-C是一个平台,致力于分析用C语言写的源代码。

      Frama-C集成几个分析技术到一个协作平台中。其包含一组提供核心功能的内核(例如一个C程序的抽象化语法树)和一组被称为插件的分析器。这些插件可以建立在平台中其他插件的计算结果之上。

      归功于这个方法,Frama-C能提供一些复杂的工具,包括:

      • 一个基于抽象解释器的分析器,旨在验证不存在运行时错误;
      • 一个基于最弱前提运算的程序防护框架;
      • 一个程序切片器;
      • 一个验证临时特性的工具;
      • 几个代码开发和相关性分析的工具。

      这些插件共享常见的语言,可以通过ASCL(ANSI/ISO C Specification Language)特性交换信息,还可以通过它们的APIs集合信息。


      Lint

      Lint实用程序尝试检测命名为C程序文件的功能,可能是错误,也可能是不可移植,或者是浪费。同时它也执行比C编译器更严格的类型检查。Lint实用程序运行C预处理器作为它的第一阶段,带有这个预处理器的标志“lint”,其被定义为允许某些有问题的代码被lint更改或跳过。因此,对于所有被lint检查的代码来说这个标志应该被认为是一个预留字。


      Sparse

      Sparse是一个源文件智能语法分析器:它不是编译器(虽然它可以作为一个前端编译器使用),也不是预处理器(虽然它包含部分预处理语句)。

      这意味着它是一个小而简单的库。内容太少是它容易使用的部分原因。它只有一个任务,就是为任意用户创造语法分析树从而进行进一步的分析。它不是分词器,也不是那些通用的上下文无关的语法分析器。事实上,上下文(语意)就是我想说的不仅解决分组标记,而且还有_type_在组中的含义。

      语法分析完成以下5个阶段:完整文件标记化、预处理(可以导致另一个文件进入标记阶段)、语法分析、延长性评估、内联函数扩展和简化树。


      Splint

      Splint是一个辅助注释轻量级静态检查工具,检查C程序的安全漏洞和代码错误。作为一个更好的lint,使用Splint毫不费力。如果投入额外的工作添加注释到程序中,Splint可以执行比任何标准lint能完成的更强的检查。

       Java

      Checkstyle

      Checkstyle是一个开发工具,可以帮助程序员编写Java代码,并使其遵守编码标准。它自动执行检查Java代码的过程,使人们从这种无聊但是重要的任务中解放出来。对于那些想要执行代码标准的项目,这是非常理想的。

      Checkstyle是高配置的,几乎可以支持任何代码标准。


      FindBugs

      FindBugs是一个使用静态分析寻找Java代码中错误的程序。


      KeY

      传统的说,Key过去是一个Java程序验证工具。虽然现在这仍然是它的主要应用之一,但是这些年来它已经成长为一个拥有各种领域应用的程序验证平台。当前最重要的应用是:

      • 程序验证(独立的图形用户界面、Eclipse集成、KeYHoare)
      • 调试(符号执行调试器)
      • 信息流分析(安全)
      • 测试用例产生(KeYTestGen)

      我们一直致力于让Key框架更容易被其他程序访问。例如,在另一个工具的后台可以很容易的将Key当成一个符号执行引擎使用。正在进行的工作示例有Java编译器的建造,是一个基于Key创建的符号执行树。


      Soot

      最初,Soot开始于一个Java优化框架,到目前为止,来自世界各地的研究人员和从业人员使用Soot分析、装备、优化和可视化Java和Android应用。它提供四种中间格式分析和转化Java字节码:

      • Baf:一个字节码的简化格式,操作简单。
      • Jimple:一个适合优化的3-地址类型中间格式。
      • Shimple:Jimple的一个SSA变化格式。
      • Grimp:一个适合反编译和代码检查的Jimple合集版本。


       JavaScript

      JSHint

      JSHint是一个社区驱动工具,它检测JavaScript代码中的错误和潜在问题。例如语法错误,隐性类型转换错误,变量泄漏等等。值得注意的是,静态代码分析可以定位许多不同类型的错误,但是它不能检测出你的程序是不是正确、快速或者有没有内存泄漏。应该结合像JSHint这样的工具和单元功能测试一起审查代码。

      JSHint非常灵活,使用者可以轻松的在期望的代码执行环境中调整它。


      JSLint

      JSLint本身是一个JavaScript程序,它可以寻找Javascript程序中的错误,是一个代码质量工具。

      JSLint扫描JavaScript源文件,寻找错误,并返回描述问题的信息和其在程序中的大概位置。这些问题不一定是语法错误,虽然经常是这样。JSLint还查看一些风格习惯和结构问题。它不能证明你的代码是正确的,只是提供另一双眼睛去帮助发现问题。

      JSLint定义了一个专业的JavaScript子集,一个比ECMAScrip程序语言标准(管理JavaScript的文件)更严格的语言。它会驳回大多数合法程序,是一个更高的标准。


      6 Opa

      Opa是一个用于网站开发的函数程序设计语言,编译为JavaScript。Opa包括两部分:第一,是一个来自Opa语言的编译器,功能类似JavaScript的语法但是有很多增强功能。第二,是一个JavaScript库,在运行时使用。

      Opa包括它自己的静态分析器。作为一种以网站应用开发为目的的语言,强大的静态类型编译器检查高级网站数据类型的有效性,默认阻止许多漏洞,比如XSS攻击和数据库代码注入。


      7 Packaging

      Lintian

      Lintian是一个静态分析工具,用于寻找Debian基础包中的错误、违反规则和其他的问题。它可以处理二进制Debian包(.deb)、微型/安装程序包(.udeb)、Debian源程序包(.dsc)和(有限程度的)变更文件。


      Rpmlint

      Rpmlint是一个检查Rpm包中常见错误的工具。经常被用在上传之前测试单个软件包和指定文件或者检查整个分布。默认情况下执行所有可用的检查,但是专项检查可以使用命令行参数实现。

      被检查的文件可以是一个Rpm软件包文件、一个指定文件或一个目录。如果是目录,递归搜索Rpm和指定文件进行检查。特殊值是指在标准输入中被读取的结果被当作单个指定文件内容处理。


      Perl

      Perl::Critic

      Perl::Critic是一个可扩展的框架,对Perl源代码创建和应用编码标准。本质上,它是一个静态源代码分析引擎。Perl::Critic分布着大量的Perl::Critic::Policy模块,它们试图执行各种编码规则。大多数规则模块以Damian Conway的书《Perl Best Practices》为基础。然而Perl::Critic不限于PBP这本书,甚至支持与Conway相矛盾的规则。你可以通过Perl::Critic接口启用、禁用和自定义这些规则。你也可以创造适合自己的新规则模块。


      PerlTidy

      Perltidy是一个Perl脚本,它缩进和重新格式化Perl脚本,使它们更容易阅读。如果你编写或者花很多时间读Perl脚本,你可能觉得它是有帮助的。

      格式化可以使用命令行参数控制。

      Perltidy可以输出置标语言和源代码。

      除了重新格式化脚本,Perltidy可以很好的帮助追踪下面这些错误,缺少或多余的括号、参数和方括号,因为它非常擅长定位错误。


      Padre

      Padre是一个Perl集成开发环境,或换句话说是一个新手Perl程序员易于使用的文本编辑器,但是同时支持大型多语言和多技术项目。

      我们的主要目的是创造一个无语伦比的环境来学习Perl,创建Perl脚本、模块和分布,提供一个可扩展的插件系统以支持添加相关功能和语言,同时支持高级开发者在任何地方使用这个编辑器。

      它也提供静态代码分析来检查常见的初级错误。


      Python

      Pylint

      Pylint是一个Python源代码分析器,它可以查找编程错误,帮助推行编码标准并嗅探代码异味(在Martin Fowler的重构书中定义)。

      Pylint有许多默认启用的规则,因为方法太多所以不能把它们全部压制在一个最小程序中。它是高度可配置的,处理程序可以在代码中控制它。另外,还可以写一些插件添加自己的检查。


    展开全文
  • Excel操作:分析工具

    千次阅读 2020-05-12 18:30:21
    Excel数据分析工具,相比于主流的专业统计分析软件SPSS、SAS, 其优势如下: 与Excel无缝结合,操作简单,容易上手; 聚合多种统计函数,其中部分工具在生成输出结果表格时,同时还能生成相应图表,有助于对统计...

    Excel数据分析工具,相比于主流的专业统计分析软件SPSS、SAS,
    其优势如下:

    • 与Excel无缝结合,操作简单,容易上手;
    • 聚合多种统计函数,其中部分工具在生成输出结果表格时,同时还能生成相应图表,有助于对统计结果的理解;
    • 使用这个现成的数据分析工具,不尽快与提高分析效率,还能够大幅度降低出错的概率。

    劣势如下:

    • 数据处理量有限;
    • 只能处理简单的统计分析,如果是大型数据或复杂的统计分析,还是需要使用专业的统计分析软件。

    一、安装分析工具库

    1. 在Excel选项,中,选择加载项,在管理下拉框中,选择“Excel加载项”;
    2. 在弹出的【Excel选项】对话框中,单击【加载项】,在【管理】下拉框中,选择“Excel加载项”;

    在这里插入图片描述
    3.单击【转到】按钮,Excel会弹出【加载宏】对话框,勾选需要安装的加载宏——【分析工具库】,若要包含分析工具库的VBA函数,则同事勾选【分析工具库——VBA】,单击【确认】按钮,即可完成加载按照;
    在这里插入图片描述
    4. 安装 成功后,在【数据】选项卡中,即可看到【数据分析】按钮,单击此按钮,即可提出【数据分析】对话框。
    在这里插入图片描述

    如之前所述,实现数据分析三大作用的分析方法归纳起来主要有两大类:

    • 描述性统计分析
    • 推断性预测分析

    在这里插入图片描述

    数据分析的三大作用:

    • 现状分析
    • 原因分析
    • 预测分析

    二、描述性统计分析

    描述性统计分析是统计分析的第一步,描述统计分析的常用指标主要有平均数、中位数、众数、标准差、方差等,提供分析对象数据的集中程度和离散程度等信息。

    我们以某公司“用户消费数据”为例,利用用户消费金额这个变量来描述用户消费行为特征,分析了解用户消费分布。通过Excel分析工具库——描述统计

    操作步骤如下:

    1. 单击【数据】选项卡中的【数据分析】按钮,选择【描述统计】;
      在这里插入图片描述
    2. 在弹出【描述统计】对话框中,对各类参数分别进行如下设置:
      在这里插入图片描述

    针对对话框的各个选项说明如下:

    • 输入区域:输入需要分析的数据源区域(对话框参数虎自动设置为单元格绝对引用);
    • 分组方式:选择分组方式,如果需要指出【输入区域】中的数据是按行还是案列排列,根据需要选择“逐行”或“逐列”;
    • 标志位于第一行:若数据源区域第一行含有标志(字段名、变量名),则应勾选;
    • 输出区域:可选当前工作表的某个活动单元格、新工作表组或新工作簿;
    • 汇总统计:包含平均值、标准误差、中位数、众数、标准差、方差、峰度、偏度、区域、最小值、最大值、求和、观测数等相关指标;
    • 平均数置信度:置信度也成为可靠度,或置信水平、置信系数,是指总体参数值落在样本统计值某一区内的概率,常用的置信度为95%或90%;
    • 第K大(小)值:表示输入数据组的第几位最大(小)值。

    输出结果如下:

    在这里插入图片描述
    通过以上分析,我们可以得知用户的消费能力,例如这些用户平均消费金额为5097.96元,用户的最高消费金额达到8886元,最低消费金额仅为1044元。

    接下来可以对用户消费能力详细解析:

    1. 表现数据集中趋势的指标有:平均值、中位数、众数。
      • 平均值是N个数据相加除以N,所得到的结果;
      • 中位数是一组数据按大小排序,排在中间位置的数据;
      • 众数是该组数据中次数出现最多的那个数值。
    2. 描述数据离散程度的指标有:方差与标准差,他们反映的是与平均值之间的离散程度。
    3. 呈现数据分布形状的指标有:峰度系数于偏度系数。

    峰度系数是描述对称分布曲线峰顶尖峭程度的指标,是相对于正态分布而言的。峰度系数>0,两侧极端数据较少,比正态分布更高更瘦,呈尖峭峰分布;峰度系数<0,表示两侧极端数据较多,比正态分布更矮更胖,呈平阔峰分布。如下图所示:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200516182213745.png?
    偏度系数是以正态分布为标准来描述数据对称性的指标。偏度系数=0,就是分布对称;如果频数分布的高峰向左偏移(偏度系数>0),长尾向右侧眼神称为正偏态分布;同样的,如果频数分布的高峰向右偏移(偏度系数<0),长尾向左眼神则称为负偏态分布。偏度系数大于1或小于-1,被称为高度偏态分布;偏度系数在0.5-1或-0.5~-1范围内,被认为是中等偏态分布;偏度系数越接近0,偏斜程度就月底。如下图所示:
    在这里插入图片描述

    展开全文
  • MAT分析工具

    万次阅读 2019-04-07 15:21:39
    Eclipse Memory Analyzer是一个快速且功能丰富的Java堆分析器,可帮助您查找内存泄漏并减少内存消耗。使用Memory Analyzer分析具有数亿个对象的高效堆转储,快速计算对象的保留大小,查看谁阻止垃圾收集器收集对象,...

    简介

    以下译于官网:

    Eclipse Memory Analyzer是一个快速且功能丰富的Java堆分析器,可帮助您查找内存泄漏并减少内存消耗。使用Memory Analyzer分析具有数亿个对象的高效堆转储,快速计算对象的保留大小,查看谁阻止垃圾收集器收集对象,运行报告以自动提取泄漏嫌疑者。

    下载地址

    https://www.eclipse.org/mat/downloads.php

    在这里插入图片描述

    最近公司的监控系统PinPoint一直在提示我们系统存在大量的Full GC问题,导致内存泄漏。

    Heap Dump

    首先了解下Heap Dump,它也叫堆转储文件,是java进程在某个时间内的快照。它在触发快照的时候保存了很多信息:java对象和类信息。通常在写Heap Dump文件前会触发一次Full GC。

    Heap Dump信息:

    Typical information which can be found in heap dumps (once more - depending on the heap dump type) is:

    • All Objects

      Class, fields, primitive values and references

    • All Classes

      Classloader, name, super class, static fields

    • Garbage Collection Roots

      Objects defined to be reachable by the JVM

    • Thread Stacks and Local Variables

      The call-stacks of threads at the moment of the snapshot, and per-frame information about local objects

    怎样获取Dump

    • 通过OOM获取,即在OutOfMemoryError后获取一份HPROF二进制Heap Dump文件,可以在jvm里添加参数:

      -XX:+HeapDumpOnOutOfMemoryError

    • 主动获取,即在虚拟机添加参数如下,然后在Ctrl+Break组合键即可获取一份Heap Dump

      -XX:+HeapDumpOnCtrlBreak

    • 使用HPROF agent

      使用Agent可以在程序执行结束时或受到SIGOUT信号时生成Dump文件。配置在虚拟机的参数如下:

      -agentlib:hprof=heap=dump,format=b

    • jmap 可以在cmd里执行,命令如下:

      jmap -dump:format=b file=<文件名XX.hprof> <pid>

    • 使用JConsole

    • 使用Memory Analyzer Tools的File -> Acquire Heap Dump功能

    MAT 用来做什么

    • 找出内存泄漏的原因
    • 找出重复引用的类和jar
    • 分析集合的使用
    • 分析类加载器

    MAT使用介绍

    在这里插入图片描述

    • Histogram

    Histogram是我们使用最多的一个,可以列出内存中的对象,对象的个数及其大小

    1. Class Name : 类名称,java类名
    2. Objects : 类的对象的数量,这个对象被创建了多少个
    3. Shallow Heap :一个对象内存的消耗大小,不包含对其他对象的引用
    4. Retained Heap :是shallow Heap的总和,也就是该对象被GC之后所能回收到内存的总和
      在这里插入图片描述
      在这里插入图片描述

    在某一项上右键打开菜单选择 list objects ->with incoming refs 将列出该类的实例

    在这里插入图片描述

    快速找出某个实例没被释放的原因,可以右健 Path to GC Roots–>exclue all phantom/weak/soft etc. reference :

    在这里插入图片描述

    用这个方法可以快速找到某个对象的 GC Root,一个存在 GC Root的对象是不会被 GC回收掉的.

    • Leak Suspects

      这是我本人最喜欢用的,自动分析内存内存泄漏的原因,可以直接定位到Class,且行数。

      在这里插入图片描述
      在这里插入图片描述

    深色区域被怀疑有内存泄漏,具体点开详情来找到类

    在这里插入图片描述
    在这里插入图片描述

    • Dominator Tree

      列出线程的树结构,及线程下面对象占用内存的空间

    • Top Comsumers

      通过图型列出最大的Object

    展开全文
  • Android性能分析工具

    千次阅读 2016-10-04 11:48:33
    DDMS 的全称是Dalvik Debug Monitor Service,是Android 开发环境中的Dalvik 虚拟机调试监控服务HierarchyViewerUI性能分析工具,分析布局文件的性能,层级嵌套UI布局复杂程度及冗余分析,View嵌套的冗余层级View的...

    性能优化系列

    性能分析工具

    内存分析工具

    1.1 heap工具获得hprof文件

    heap工具主要是用来检测堆内存的分配情况的。它可以导出一个hprof文件,这个是手机某个时间段的内存镜像,通过分析该文件,就可以得知堆内存的分配情况。heap工具位于Android Device Monitor中(这个Android Device Monitor在Eclipse中即DDMS界面)。

    Android Studio中,在你要分析的应用已执行的前提下,通过在Tools→Android→Android Device Monitor中打开。如下图:

    openDDMS

    打开后,操作步骤顺序如下:

    1. 在Android Device Monitor界面中选择你要分析的应用程序的包名
    2. 点击Update Heap来更新统计信息
    3. 然后点击Cause GC即可查看当前堆的使用情况
    4. 点击Dump HPROF file,准备生成hprof文件

    Android Device Monitor

    第4步点击后,几秒钟内会出现一个窗口提示你去保存文件,(这个应用当前的内存信息会被保存在这个hprof文件中),将文件保存在顺手的地方(比如说桌面)即可。

    1.2 分析hprof文件(AS、eclipse插件MAT)

    其实leakCanary内部也是通过分析hprof文件来进行内存泄露的判断。

    1.2.1 通过Android Studio打开hprof文件

    拿到一个hprof文件后,可以直接通过Android Studio来打开。只需将该文件拖放到Android Studio中,就打开了。

    打开后选择Package Tree View,内存使用情况就是以包名分类。如下图

    package Tree View

    在界面中找到你的应用程序的包名,打开即可看到内存的使用情况。自己写的类一目了然,我们还可以借助右侧的Analyzer Task去做一些分析,比如说分析出存在泄漏的leakActivity,如下图所示:

    hprof Analyzer Tasks

    1.2.2 通过MAT打开hprof文件

    MAT工具(Memory Analysis Tools)其实是Eclipse时代的产物,它也是用来分析 hprof 文件的,不过LeakCanary可以帮助我们自动分析,而使用MAT需要我们自己去导出并且分析hprof 文件,使用的过程有些麻烦, 当前很多比较有经验的老程序员都知晓这个,如果面试的时候能和他们扯起这个,是一个加分项。

    首先在eclipse上安装MAT插件:

    1、去官方网站,查看最新版本的地址,当前最新地址如下:

    2、打开eclipse,Help->Install New SoftWare, 输入上面的update site,如图:

    installMAT

    安装完成后提示重启Eclipse,重启后打开window→ open perspective,看到Memory Analysis证明安装成功。

    findMAT

    为了节省大家的时间,建议直接下载它的Stand-alone版本,免安装。

    eclipseMATDownload

    MAT的使用步骤如下:

    1. 首先需要Dump出一份hprof文件,可以在android studio或者eclipse导出。方法在上一节已介绍过(heap的介绍中)

    2. 直接Dump出的hprof文件要经过转换才能被 MAT识别,Android SDK提供了这个工具 hprof-conv, 在SDK目录下(sdk/platform-tools)

    hprof-conv

    该工具需要通过命令行来进行转换。以下为参考转换流程。

    1、将导出来的hprof文件放到此目录下(sdk/platform-tools),重命令为input.hprof。

    2、命令行cd 到此目录下,然后输入命令:hprof-conv input.hprof out.hprof

    PS:注意空格,前一段的hprof-conv代表要执行hprof-conv工具;中间的input.hprof代表你想对这个叫input.hprof的文件进行转换;最后那段out.hprof代表你转换出来的结果文件名叫做out.hprof

    3、执行后,此目录下(sdk/platform-tools)将会出现一个新文件名为:out.hprof,它即是我们的转换后的结果文件。

    4、打开MAT,导入我们的转换后的hprof文件(最好先将out.hprof放到一个独立的文件夹中,因为导入时MAT会在当前文件夹生成很多解析文件出来),导入完成后,先弹出如下start wizard 对话框,默认选第一个“leak suspect report”我们直接点finish。成功打开后如下图所示:

    leak suspects

    5、在OverView页项下面,点击 Actions下的 Histogram

    Histogram

    6、将得到 Histogram结果,它按类名将所有的实例对象列出来。

    Histogram Result

    7、在第一行的正则表达式中输入我们demo里面的类名MainActivity

    Histogram Regx

    8、选中匹配出的结果右键打开菜单选择 list objects->with incoming refs。

    with incoming refs

    9、得到该类的实例,以及展开后可以看到它的引用路径

    MAT Reference Path

    MAT Reference Path02

    10、 快速找出MainActivity实例没被释放的原因,可以右健 Path to GCRoots–>exclue all phantom/weak/soft etc. reference

    Path to GC Roots

    11、可以看到,MainActivity在AsyncTask中引用,没有被释放。

    MAT Path to GC Roots Result

    1.3 性能分析工具TraceView

    TraceView工具可以帮助开发者找到代码的性能瓶颈。方便我们找到一些影响到我们应用性能的代码。比如说某段代码相对其他代码而言,执行时间过长,它就能检测出来,那我们就能对症下药了。

    1.3.1 第一种使用方式

    该工具和heap工具一样,也位于Android Device Monitor中。使用步骤如下:

    1、打开Android Device Monitor,选中我们的app进程,然后按上面的“Start Method Profiling”按钮,如图。

    Start Method Profiling

    2、点击带红点的按钮后,小红点变黑色,表示TraceView已经开始工作,然后我们就可以操作我们的APP,点击我们demo的按钮,开始阻塞任务。完成操作后点击我们已经变成黑色的“Start Method Profiling”按钮,停止TraceView,生成此操作的Trace,如图:

    stop TraceView

    PS:在实际的项目开发中,我们想检测某一个业务功能的性能,一般是先start trace,然后直接触发某个操作,最好是最小范围的操作,接着stop trace。最后拿到这个“最小操作范围”的trace来分析,跟踪我们的代码瓶颈

    1.3.2 第二种使用方式

    除了上面针对某操作跟踪之外,我们还可以针对一段代码进行跟踪。

    1、比如当我们怀疑某一段代码的性能时,我们可以直接监听这一段代码。

    // 开始监听......(需要被监听的代码段)......(需要被监听的代码段)
    android.os.Debug.startMethodTracing("xmgTest");
    android.os.Debug.stopMethodTracing();//结束监听

    2、当代码执行完这一段时,会在sdcard目录下生成一个trace文件(如果按照先前的代码,那么该文件名为:xmgTest.trace)。为了顺利生成,我们需要在我们的程序中添加sd卡的访问权限。

    <!-- 往Mainfest文件中添加SD卡写入权限和添加删除文件的权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

    3、在SD卡生成的trace文件如下图:

    SDcard Trace

    4、将trace文件导出到电脑上,我们可以在我们的DDMS打开,File->open file , 然后选择我们导出的trace文件

    DDMS会自动使用traceview.bat工具打开,sdk\tools\traceview.bat

    open trace file

    打开后,结果界面将跟第一种使用方式相同,图略。

    1.3.3 分析trace结果

    如先前的trace结果图片所示,traceView结果分为上下两半进行展示。

    上面是时间轴面板 (Timeline Panel)

    时间轴面板的左侧显示的是线程信息。时间轴面板的右侧黑色部分是显示执行时间段;白色是线程暂停时间段。时间轴面板的右侧鼠标放在上面会出现时间线纵轴,在顶部会显示当前时间线所执行的具体函数信息。

    下面是分析面板(Profile Panel)

    分析面板展示的是各个方法函数执行消耗时间性能的统计,点击一个函数,会出现两部分的数据,Parents和Children,分别表示父方法(当前被哪些方法调用)和子方法(当前调用哪些方法)。

    下面列出了分析面板(Profile Panel)各参数的含义:

    列名描述
    Name该线程运行过程中所调用的函数名
    Incl Cpu Time某函数占用的CPU时间,包含内部调用其它函数的CPU时间
    Excl Cpu Time某函数占用的CPU时间,但不含内部调用其它函数所占用的CPU时间
    Incl Real Time某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间
    Excl Real Time某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时间
    Call+Recur Calls/Total某函数被调用次数以及递归调用占总调用次数的百分比
    Cpu Time/Call某函数调用CPU时间与调用次数的比。相当于该函数平均执行时间
    Real Time/Call同CPU Time/Call类似,只不过统计单位换成了真实时间

    通过分析我们每个函数消耗,就能分析出我们的“瓶颈”函数。

    1.3.4 traceView举例

    例如我们的Demo,里面存在这样的代码:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startTask();
                }
            });
        }
    
        private void startTask() {
            // 多次循环打Log
            for (int i=0;i<1000;i++){
                for (int j=0;j<1000;j++){
                    String name="xmg"+i*j;
                    Log.i("xmg", "my name is: "+name);
                }
            }
        }

    startBlockTask函数内部有两重的for循环,多次循环打log。我们点击button触发事件后,得出这一段代码的TraceView如下图:

    TraceView Demo

    从上图的分析我们可以看出,序号为15的函数消耗了比较多的性能,它是除了UI绘制以外最大的性能消耗“钉子户”,耗时明显远高与其他函数,并且它的调用次数和递归调用次数异常。so,它就是我们的性能“瓶颈”,它的存在使我们的UI变卡,点击展开可以查看它的Parent函数: startBlockTask。根据这个,我们可以定位到我们需要优化的函数并做相应的优化。

    1.4 更智能的性能分析工具leakCanary

    不再介绍,详情见内存优化

    DDMS

    DDMS 的全称是Dalvik Debug Monitor Service,是Android 开发环境中的Dalvik 虚拟机调试监控服务

    性能分析

    性能分析

    HierarchyViewer

    UI性能分析工具,分析布局文件的性能,层级嵌套

    UI布局复杂程度及冗余分析,View嵌套的冗余层级

    View的性能指标:测量、布局、绘制的渲染时间

    1、invalidate Layout按钮

    invalidate(),强制刷新

    2、requestLayout按钮

    requestLayout(),重新测量,布局

    使用GPU过度绘制分析UI性能

    开发者选项中的GPU过度绘制工具(Show GPU Overdraw)

    性能分析

    使用GPU呈现模式图及FPS考核UI性能

    开发者选项中的GPU呈现模式分析,Profile GPU Rendering

    性能分析

    Android Monitor

    性能分析

    性能分析

    TraceView

    TraceView 简介

    Traceview 是Android 平台特有的数据采集和分析工具,它主要用于分析Android 中应用程序的hotspot(瓶颈)。Traceview 本身只是一个数据分析工具,而数据的采集则需要使用Android SDK 中的Debug 类或者利用DDMS 工具。二者的用法如下:

    开发者在一些关键代码段开始前调用Android SDK 中Debug 类的startMethodTracing 函数,并在关键代码段结束前调用stopMethodTracing 函数。这两个函数运行过程中将采集运行时间内该应用所有线程(注意,只能是Java线程)的函数执行情况,并将采集数据保存到/mnt/sdcard/下的一个文件中。开发者然后需要利用SDK 中的Traceview工具来分析这些数据。

    借助Android SDK 中的DDMS 工具。DDMS 可采集系统中某个正在运行的进程的函数调用信息。对开发者而言,此方法适用于没有目标应用源代码的情况。DDMS 工具中Traceview 的使用如下图所示。

    观察CPU的执行情况,测试的进程中每个线程运行的时间线,线程中各个方法的调用信息(CPU使用时间、调用次数等)

    可以方便的查看线程的执行情况,某个方法执行时间、调用次数、在总体中的占比等,从而定位性能点

    一般Traceview可以定位两类性能问题

    • 方法调运一次需要耗费很长时间导致卡顿
    • 方法调运一次耗时不长,但被频繁调运导致累计时长卡顿

    性能分析

    性能分析

    性能分析

    性能分析

    点击上图中所示按钮即可以采集目标进程的数据。当停止采集时,DDMS 会自动触发Traceview 工具来浏览采集数据

    下面,我们通过一个示例程序介绍Traceview 的使用。

    实例程序如下图所示:界面有4 个按钮,对应四个方法。

    性能分析

    点击不同的方法会进行不同的耗时操作。

    public class MainActivity extends ActionBarActivity {
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }
    
            public void method1(View view) {
                int result = jisuan();
                System.out.println(result);
            }
    
            private int jisuan() {
                for (int i = 0; i < 10000; i++) {
                    System.out.println(i);
                }
                return 1;
            }
    
            public void method2(View view) {
                SystemClock.sleep(2000);
            }
    
            public void method3(View view) {
                int sum = 0;
                for (int i = 0; i < 1000; i++) {
                    sum += i;
                }
                System.out.println("sum=" + sum);
            }
    
            public void method4(View view) {
                Toast.makeText(this, "" + new Date(), 0).show();
            }
        }

    我们分别点击按钮一次,要求找出最耗时的方法。点击前通过DDMS 启动Start Method Profiling 按钮。

    性能分析

    然后依次点击4 个按钮,都执行后再次点击上图中红框中按钮,停止收集数据。

    接下来我们开始对数据进行分析。

    当我们停止收集数据的时候会出现如下分析图表。该图表分为2 大部分,上面分不同的行,每一行代表一个线程的执行耗时情况。main 线程对应行的的内容非常丰富,而其他线程在这段时间内干得工作则要少得多。图表的下半部分是具体的每个方法执行的时间情况。显示方法执行情况的前提是先选中某个线程。

    性能分析

    我们主要是分析main 线程。

    上面方法指标参数所代表的意思如下:

    列名描述
    Name该线程运行过程中所调用的函数名
    Incl Cpu Time某函数占用的CPU 时间,包含内部调用其它函数的CPU 时间
    Excl Cpu Time某函数占用的CPU 时间,但不含内部调用其它函数所占用的CPU 时间
    Incl Real Time某函数运行的真实时间(以毫秒为单位),包含调用其它函数所占用的真实时间
    Excl Real Time某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时间
    Call+Recur Calls/Total某函数被调用次数以及递归调用占总调用次数的百分比
    Cpu Time/Call某函数调用CPU 时间与调用次数的比。相当于该函数平均执行时间
    Real Time/Call同CPU Time/Call 类似,只不过统计单位换成了真实时间

     
    我们为了找到最耗时的操作,那么可以通过点击Incl Cpu Time,让其按照时间的倒序排列。我点击后效果如下图:

    性能分析

    通过分析发现:method1 最耗时,耗时2338 毫秒。

    性能分析

    那么有了上面的信息我们可以进入我们的method1 方法查看分析我们的代码了

    生成.trace文件

    android.os.Debug类,其中重要的两个方法Debug.startMethodTracing()和Debug.stopMethodTracing()。这两个方法用来创建.trace文件,将从Debug.startMethodTracing()开始,到Debug.stopMethodTracing()结束,期间所有的调用过程保存在.trace文件中,包括调用的函数名称和执行的时间等信息。

    性能分析

    性能分析

    dmtracedump

    dmtracedump -g result.png target.trace  //结果png文件  目标trace文件

    Allocation Tracker

    追踪内存的分配,追踪内存对象的来源,通过这个工具我们可以很方便的知道代码分配了哪类对象、在哪个线程、哪个类、哪个文件的哪一行

    运行DDMS,只需简单的选择应用进程并单击Allocation tracker 标签,就会打开一个新的窗口,单击“Start Tracing”按钮;

    然后,让应用运行你想分析的代码。运行完毕后,单击“Get Allocations”按钮,一个已分配对象的列表就会出现第一个表格中。

    单击第一个表格中的任何一项,在表格二中就会出现导致该内存分配的栈跟踪信息。通过allocation tracker,不仅知道分配了哪类对象,还可以知道在哪个线程、哪个类、哪个文件的哪一行。

    性能分析

    Systrace

    性能分析

    Systrace其实有些类似Traceview,它是对整个系统进行分析

    DDMS->Capture system wide trace using Android systrace

    Heap

    性能分析

    内存监测工具,分析内存使用情况,查看当前内存快照,便于对比分析哪些对象有可能是泄漏了的

    heap 工具可以帮助我们检查代码中是否存在会造成内存泄漏的地方。用heap 监测应用进程使用内存情况的步骤如下:

    • 启动eclipse 后,切换到DDMS 透视图,并确认Devices 视图、Heap 视图都是打开的

    • 点击选中想要监测的进程,比如system_process 进程

    • 点击选中Devices 视图界面中最上方一排图标中的“Update Heap”图标

    • 点击Heap 视图中的“Cause GC”按钮

    • 此时在Heap 视图中就会看到当前选中的进程的内存使用量的详细情况

    说明:

    • 点击“Cause GC”按钮相当于向虚拟机请求了一次gc 操作

    • 当内存使用信息第一次显示以后,无须再不断的点击“Cause GC”,Heap 视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化

    • 内存使用信息的各项参数根据名称即可知道其意思,在此不再赘述

    如何才能知道我们的程序是否有内存泄漏的可能性呢。这里需要注意一个值:Heap 视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象。在data object 一行中有一列是“Total Size”,其值就是当前进程中所有Java 数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。可以这样判断:

    • 不断的操作当前应用,同时注意观察data object 的Total Size 值

    • 正常情况下Total Size 值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对象,而在虚拟机不断的进行GC 的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平

    • 反之如果代码中存在没有释放对象引用的情况,则data object 的Total Size 值在每次GC 后不会有明显的回落,随着操作次数的增多Total Size 的值会越来越大,直到到达一个上限后导致进程被kill 掉

    • 此处以system_process 进程为例,在我的测试环境中system_process 进程所占用的内存的data object
      的Total Size 正常情况下会稳定在2.2~2.8 之间,而当其值超过3.55 后进程就会被kill

    • 总之,使用DDMS 的Heap 视图工具可以很方便的确认我们的程序是否存在内存泄漏的可能性

    Leakcanary

    Square出品,内存泄露监测神器,GitHub地址

    Eclipse Memory Analyzer(MAT)

    性能分析

    内存分析工具,这个工具分为Eclipse插件版和独立版两种,如果你是使用Eclipse开发的,那么可以使用插件版MAT,非常方便。如果你是使用Android Studio开发的,那么就只能使用独立版的MAT了

    HPROF文件

    性能分析

    HPROF文件是MAT能识别的文件,HPROF文件存储的是特定时间点,java进程的内存快照

    点击Dump HPROF file按钮,生成HPROF文件,这个文件记录着我们应用程序内部的所有数据。但是目前MAT还是无法打开这个文件的,我们还需要将这个HPROF文件从Dalvik格式转换成J2SE格式,使用hprof-conv命令就可以完成转换工作

    hprof-conv dump.hprof converted-dump.hprof 

    Histogram

    Histogram:列出内存中每个对象的名字、数量以及大小
    Shallow Heap:当前对象自己所占内存的大小,不包含引用关系的

    析大内存的对象,分析对象的数量

    性能分析

    Dominator Tree

    Dominator Tree:列出最大的对象以及其依赖存活的Object,并且我们可以分析对象之间的引用结构

    Retained Heap

    表示这个对象以及它所持有的其它引用(包括直接和间接)所占的总内存

    在每一行的最左边都有一个文件型的图标,这些图标有的左下角带有一个红色的点,有的则没有。带有红点的对象就表示是可以被GC Roots访问到的,可以被GC Root访问到的对象都是无法被回收的。带红点的对象最右边都有写一个System Class,说明这是一个由系统管理的对象,并不是由我们自己创建并导致内存泄漏的对象

    搜索大内存对象通向GC Roots的路径,因为内存占用越高的对象越值得怀疑

    GC Roots reference chain(引用链)的起点,是一个在current thread(当前线程)的call stack(调用栈)上的对象(例如方法参数和局部变量),或者是线程自身或者是system class loader(系统类加载器)加载的类以及native code(本地代码)保留的活动对象。所以GC Roots是分析对象为何还存活于内存中的利器。

    性能分析

    性能分析

    dumpsys meminfo命令

    adb shell dumpsys meminfo <package_name|pid> [-d]

    命令后面带-d标志会打印出更多关于内存使用的信息

    adb shell dumpsys meminfo com.google.android.apps.maps -d
    C:\Users\AllenIverson>adb shell dumpsys meminfo com.qq.googleplay -d
    Applications Memory Usage (kB):
    Uptime: 588545781 Realtime: 1460567078
    
    ** MEMINFO in pid 19204 [com.qq.googleplay] **
                       Pss  Private  Private  Swapped     Heap     Heap     Heap
                     Total    Dirty    Clean    Dirty     Size    Alloc     Free
                    ------   ------   ------   ------   ------   ------   ------
      Native Heap        0        0        0        0    20480     9524    10955
      Dalvik Heap    23402    22936        0        0    40714    38963     1751
     Dalvik Other      729      728        0        0
            Stack      392      392        0        0
        Other dev        5        0        4        0
         .so mmap     1586      232      468        0
        .apk mmap      281        0       52        0
        .ttf mmap      262        0      248        0
        .dex mmap     5500        0     5356        0
        .oat mmap     2606        0      916        0
        .art mmap     2350      924      800        0
       Other mmap     1342        4      884        0
          Unknown     7798     7748        0        0
            TOTAL    46253    32964     8728        0    61194    48487    12706
    
     Objects
                   Views:      261         ViewRootImpl:        1
             AppContexts:        3           Activities:        1
                  Assets:        4        AssetManagers:        4
           Local Binders:        7        Proxy Binders:       16
           Parcel memory:        5         Parcel count:       23
        Death Recipients:        0      OpenSSL Sockets:        0
    
     Dalvik
             isLargeHeap:    false
    
     SQL
             MEMORY_USED:        0
      PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0

    一般我们只需要关心Pss Total和Private Dirty两列数据,在某些情况下,Private Clean和Heap Alloc两列数据可能会提供你感兴趣的数据

    adb shell dumpsys batterystats 电量状态

    Lint工具

    性能分析

    使用Lint进行资源及冗余UI布局等优化,Lint 有自动修复、提示建议和直接跳转到问题处的功能

    集成到androidstudio,点击工具栏的Analysis -> Inspect Code

    内存抖动:短时间内有大量频繁的对象创建与释放操作

    Lint是Android提供的一个静态扫描应用源码并找出其中的潜在问题的一个强大的工具

    运行Lint:点击工具栏的Analysis -> Inspect Code

    ProGuard

    混淆代码,压缩和优化代码,apk瘦身

    GC打印

    当发生GC垃圾回收的时候,会在logcat打印日志

    I/art : Explicit concurrent mark sweep GC freed 104710(7MB) AllocSpace objects, 21(416KB) LOS objects, 33% free, 25MB/38MB, paused 1.230ms total 67.216ms

    Investigating Your RAM Usage

    http://android.xsoftlab.net/tools/debugging/debugging-memory.html

    展开全文
  • 盘点7款常用的数据分析工具

    千次阅读 2020-08-25 17:38:24
    随着大数据信息化时代的到来,数据分析是各行各业都绕不开的一个话题...一款好的数据分析工具可以让你事半功倍,瞬间提高学习工作效率。在此,笔者列出了被提及频率最高且使用最多的几种数据分析工具。 1、EXCEL .
  • 如内存泄漏直接导致服务宕机,遇到这样的问题对于一个经验尚浅的开发人员来说难度非常大,好的一点是JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断...
  • JVM常用分析工具

    千次阅读 2017-04-11 23:48:02
    JVM常用分析工具一、Java Virtual Machine (JVM) Compile once, run everywhere. 二、垃圾收集器与内存回收分配策略 Serial -> 单线程、“Stop the world”、简单 高效{粗暴}、client模式 默认 新生代. ParNew ...
  • 十大MySQL性能分析工具汇总!

    千次阅读 2019-05-24 17:25:50
    前言: MySQL 数据库最常见的两个瓶颈是CPU和I/O的瓶颈。CPU在饱和的时候一般发生在数据装入内存或从磁盘上...正确的借助一些性能分析工具,能够帮助DBA或系统运维人员进行问题快速的定位。 一、 Pt-qurey-digest...
  • 开源java性能分析工具 鲜为人知但有用:开源应用程序性能监视的状态 对于任何应用程序来说,最重要的事情之一就是性能。 我们要确保用户获得他们能获得的最佳体验,并想知道我们的应用已启动并正在运行。 这就是...
  • 数据分析师常用工具有哪些?初学者必看

    万次阅读 多人点赞 2018-01-11 08:41:24
    我给你一份数据分析师常用工具指南,按照这份指南,小白也能成为数据分析高手! 这是一份入门到熟练的工具指南,并不包含数据挖掘等高阶内容。 Step1:Excel学习掌握 所用的工具正是职场中最常用的Excel! ①...
  • 本篇文章介绍几款linux系统性能压测以及分析工具,在实际开发环境中,我们会经常使用到它们对我们的系统进行性能分析。 当我们需要判断linux系统的性能时,常常会观察几个常用的指标:平均负载、CPU使用率,IO负载...
  • 蓝屏dump分析教程,附分析工具WinDbg

    万次阅读 2014-11-07 16:00:30
    它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏、程序崩溃(IE崩溃)原因,是我们日常工作中必不可少的一个有力工具,学会使用它,将有效提升我们的问题解决效率和准确率。 二、WinDbg6.12.0002.633下载...
  • 更为重要的是,除非有需要的那些人易于获得大数据,除非能迅速获得洞察力,否则大数据分析工具的用处并不是很大。 大数据分析工具面临的四大最常见的难题,具体如下: 1.需要在更短的时间内处理更多的数据。 ...
  • 本文是一个静态代码分析工具的清单,共有26个工具。包括4个.NET工具、2个Ada工具、7个C++工具、4个Java工具、2个JavaScript工具、1个Opa工具、2个Packaging工具、3个Perl工具、1个Python工具。 1.NET .NET ...
  • 本文介绍了常用的性能分析工具和故障排查工具,希望可以帮助开发人员在排查性能问题的时候快速定位到性瓶颈。每个工具都有其优势与劣势,只有更好了解问题所出现的场景,理清解决问题的思路,才能最大化的发挥工具的...
  • 内存分析工具MAT的使用

    千次阅读 2016-09-23 13:09:15
    原文链接:http://www.jianshu.com/p/d8e247b1e7b2MAT简介MAT(Memory Analyzer ...使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表
  • Linux系统中五款好用的日志分析工具

    千次阅读 2019-05-11 14:47:36
    现在有很多开源日志跟踪器和分析工具可供使用,这使得为活动日志选择合适的资源比你想象的更容易。自由和开源软件社区提供的日志设计适用于各种站点和操作系统。以下是五个我用过的最好的工具,它们并没有特别的顺序...
  • 8 种用于检测前端性能的分析工具

    千次阅读 2020-08-13 07:57:03
    为了能帮助更好的实现这一目标,这里推荐了几个性能分析工具。 1. PageSpeed Insights 这是一个免费的服务,分析网页的内容,然后提出建议,使该网页更快。它为您提供了关键指标,如第一个内容绘制,总阻塞时间和更...
  • 抓包工具 分析 1. IOS抓包工具 Charles使用 在iOS开发过程中,抓包是常见的必备技能之一。官方dmg下载地址:点击此处下载Charles 工具介绍: Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开发时,...
  • 原文地址:https://blog.csdn.net/wishfly/article/details/660747Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日志文件(归档日志文件)中的...
  • jvm(四)——JVM自带内存分析工具详解

    万次阅读 多人点赞 2018-09-09 18:10:30
    虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,工具的使用会有所限制。所有的工具几乎都是依赖于jdk的接口和底层的这些命令,研究和...
  • 静态代码分析工具清单:开源篇

    千次阅读 2017-02-21 23:47:08
    本文是一个静态代码分析工具的清单,共有26个工具。包括4个.NET工具、2个Ada工具、7个C++工具、4个Java工具、2个JavaScript工具、1个Opa工具、2个Packaging工具、3个Perl工具、1个Python工具。
  • crash工具分析sysdump

    千次阅读 2018-05-15 21:07:30
    系统一旦崩溃,内核就没法正常工作了,这个时候将由kdump提供一个用于捕获当前运行信息的内核,该内核会将此时内存中的所有运行状态和数据信息收集到一个dump core文件中以便之后分析崩溃原因。一旦内存信息收集完成...
  • 程序动态分析工具调研

    千次阅读 2015-10-19 17:03:05
    综述本文是对程序动态工具的调研,通对各种动态分析工具的原理、功能、优缺点等方面的调研分析来使读者在使用工具时更有针对性。 作为调研,本文并不过多的涉及工具的细节,主要关注点在于工的原理、功能、优缺点...
  • 系统蓝屏日志DMP文件分析工具WinDbg及教程

    万次阅读 多人点赞 2019-06-18 15:39:31
    它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏、程序崩溃(IE崩溃)原因,是我们日常工作中必不可少的一个有力工具,学会使用它,将有效提升我们的问题解决效率和准确率。   二、WinDbg6.12.0002.633...
  • Android studio内存泄露分析工具

    千次阅读 2017-02-20 10:12:53
    Android Studio在为我们提供了良好的编码体验的同时,也提供了许多对App性能分析工具,让开发者可以更方便分析App性能。Google在IO大会上一直告诫开发者不要无节制的使用手机内存,要注意一些不良的开发习惯会导致...
  • 国内的网站分析行业,始终(这么说应该不过分)是模仿的美国,直到今天几乎仍然如此。但这一领域随着数据对数字营销渗透程度的加深,忽然变得极为重要。一方面,数字营销可第三方监测的部分非常有限,而网站分...
  • 生信人工具盒是生信人团队的开发的一款软件,非常方便。下面我将演示一下如何通过这款软件进行生存分析。为了方便大家理解,形式依然是 数据结构-操作-结果解读。 1. 表达矩阵与生存信息矩阵 表达矩阵依然是分成...
  • 大数据分析工具应用总结

    千次阅读 2021-11-28 09:23:16
    数据分析工具 :各种厂商开发了数据分析的工具、模块,将分析模型封装,使不了解技术的人也能够快捷的实现数学建模,快速响应分析需求 传统分析 :在数据量较少时,传统的数据分析已能够发现数据中包含的知识,包括...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 514,741
精华内容 205,896
关键字:

原因分析工具