b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

JAVA内存泄漏检测工具(IBM HeapAnalyzer)

电脑杂谈  发布时间:2020-12-21 07:04:12  来源:网络整理

HeapAnalyzer是一个IBM图形工具,用于分析Java程序的内存堆使用情况。

如何使用IBM HeapAnalyzer?

IBM HeapAnalyzer下载后,首先阅读自述文件,其中详细介绍了HeapAnalyzer的用法。您可以在命令行中输入java –Xmx [heapsize] –jar ha26.jar以启动该工具并加载heapdump文件。对于相对较大的堆转储,请将-Xmx设置为更大的值(大于堆转储的大小),以避免在加载过程中发生OOM。对于在64位计算机上生成的非常大的堆转储,无法在个人计算机上对其进行分析。

打开heapdump文件后,我通常单击“ Analysis”中的“ Tree View”以树的形式显示来自根节点的内存对象分配信息

java分析内存占用的工具

第一行中的java.lang.ref.Refenrence类及其76个子级占据了已用堆大小(31M / 46M)的67%,并且仅占用了76位。双击java.lang.ref.Refenrence,我们可以看到它引用的两个子节点。在java.lang.ref.Finalizer 67%之后的子节点之一指导我们,应该将内存泄漏问题作为其参考。

java分析内存占用的工具

接下来,您可以逐级扩展它,或右键单击“查找泄漏嫌疑人”,然后让HeapAnalyzer帮助您查找可能发生泄漏的地方。泄漏通常发生在具有“异常多”引用(子节点)的类上。这些对象在创建后没有释放,并且累积了数百个导致OutOfMemory的对象。右键中的“转到最大放置子树”也基于此原理,其解释为:

“搜索总尺寸下降”将在父级的总尺寸和父级的最大子级尺寸之间找到尺寸下降。

由于泄漏,每个子节点占用的内存空间不大,但是巨大的内存量将导致父节点的总大小变大。但是,并非所有相反的点都是泄漏发生的地方,否则我们就不必对其进行分析。

如何分析Java堆转储文件?

如果在启动过程中控制台中出现java.lang.OutOfMemoryError,则可以将数字增加到以上数量(800)以提供更多空间。

然后通过“打开”生成转储文件,打开屏幕如下,如果文件很大,则需要一段时间才能等待

ibm heapAnalyzer工具在打开时已经执行了基本分析。完成上述所有操作后,将出现以下结果:

[-未显示照片-]

除了显示所需结果外,还会生成一棵树。在不再需要此转储之前,请勿关闭此屏幕。

基本术语:

[-未显示照片-]

然后简要介绍上述界面。

java分析内存占用的工具_java分析内存占用的工具

[-未显示照片-]

每个节点树的大小占总堆栈大小(例如94%),然后占内存中此类的大小以及接下来的五个子对象。请注意,此子对象的含义不是继承关系中的子类,但在上面已定义:如果A对象引用B对象,则B对象是A对象的单词对象。

然后,该工具将根据分析结果显示可能泄漏的对象。如下图所示:

[-未显示照片-]

该分析基于子对象和父对象的大小之间的差异。如对象不大,但父对象却超大,则可能是因为父对象是一个集合类(例如数组),并且包含大量子对象作​​为元素。

工具栏:

[-未显示照片-]

单击分析工具栏中的表图标以显示以下统计表,然后可以单击列标题进行排序。每个标题的含义简要介绍如下:

TotalSize:此对象及其所有子对象(以及子对象的子对象,即可以从该对象引用的所有对象)的总大小,以位为单位;

Size:此对象的大小,例如前56位= 56/8字节= 7b;

No.Child:子对象的数量,不包括子对象的子对象;

父对象编号:父对象的数量,不包括父对象的对象;

名称:对象的名称。

地址:堆中对象的地址。

1.分析结果

1. 1大量以java / util / HashMap $ Entry为元素的数组,占堆栈总数的8%,比例很高。

1. 2大量的java / util / Hashtable $ HashtableEntry是一个元素数组,占总堆栈的5%。

1. 3中的数组指向java / util / Hashtable $ HashtableCacheHashEntry对象。

根据分析,最可疑的对象应该是java / util / HashMap $ Entry。

2.其他经验收集:

“使用堆转储工具非常简单。困难在于找到“内存泄漏的真正原因”。通常,可以通过比较多个堆转储文件来找到它。”

“ ObjectInputStream / ObjectOutputStream应注意内存泄漏。reset()”

“由于存在JDK问题,如果使用的是:J2RE5.0 IBM J9 2. 3AIX ppc-32 build j9vmap3223-20070201,则此SR4版本存在问题,这限制了可装入的类装入器类的数量,默认值为8192。如果超过此限制,将引发OutOfMemory错误。”

对于此问题,可以设置为增加类加载器可以加载的类的数量。

3.知识补充介绍

3. 1个堆(堆)和非堆(非堆)内存

根据官方声明:“ Java虚拟机有一个堆。该堆是运行时数据区。所有类实例和数组的内存都从此处分配。堆是在Java虚拟机启动时创建的。 ” “在JVM中,中间堆之外的内存称为非堆内存(Non-heap memory)。可以看出,JVM主要管理两种类型的内存:堆和非堆。简单地说,堆就是内存Java代码可访问,保留供开发人员使用;非堆保留供JVM自己使用,因此方法区域,JVM的内部处理或优化所需的内存(例如JIT编译)代码缓存),每个类结构(例如运行时常量池,字段和方法数据)以及方法和构造方法的代码都位于非堆内存中。

3. 2堆内存分配

JVM分配的初始内存由-Xms指定,默认值为物理内存的1/64; JVM分配的最大内存由-Xmx指定,默认值为物理内存的1/4。当默认的可用堆内存小于40%时,JVM将增加堆,直到最大限制为-Xmx为止;当可用堆内存大于70%时,JVM将减少堆,直到最小限制为-Xms。因此,服务器通常将-Xms和-Xmx设置为相等,以避免在每次GC之后调整堆大小。

33非堆内存分配

JVM使用-XX:PermSize设置非堆内存的初始值,默认值为物理内存的1/64; XX:MaxPermSize设置最大非堆内存大小,默认值为物理内存的1/4。

3. 4JVM内存限制(最大)

首先,JVM内存被限制为实际的最大物理内存。假设物理内存无限大,则最大JVM内存与操作系统之间有很大关系。简而言之,尽管32位处理器具有4GB的可控内存空间,但特定的操作系统会给出一个限制,该限制通常为2GB-3GB(Windows系统下通常为1. 5G -2G,Linux系统下为2G -3G),并且对64位以上的处理器没有任何限制。

vs2010 Chinese Ultimate是一个集成环境,可简化创建,调试和部署应用程序的基本任务。借助Visual Studio 2010版,您可以释放想象力,轻松实现目标。借助强大的设计图形以及鼓励设计师和开发人员一起工作的能力,您可以充分发挥自己的创造力并使梦想成真。在越来越多的平台(包括Silverlight,SharePoint和云应用程序)的个性化环境中工作,并使用现有技术来加快编码过程。对测试优先开发和新调试工具的集成支持使您能够快速查找并修复所有错误,并帮助确保高质量的解决方案。

支持的操作系统:

Windows 7; Windows Server 2003 R2(32位x86); Windows Server 2003 R2 x64版本; Windows Server 2003 Service Pack 2; Windows Server 2008 R2; Windows Server 2008 Service Pack 2; Windows Vista Service Pack 2; Windows XP Service Pack 3

Windows XP(x86) Service Pack 3-除精简版外的所有版本

Windows Vista(x86和x64)Service Pack 2除入门版以外的所有版本

java分析内存占用的工具_java分析内存占用的工具

Windows 7(x86和x64)

Windows Server 2003(x86和x64)Service Pack 2所有版本

如果MSXML6不存在,则用户需要安装它

Windows Server 2003 R2(x86和x64)-所有版本

Windows Server 2008(x86和x64)Service Pack 2所有版本

Windows Server 2008 R2(x64)-所有版本

Visual Studio 2010的新功能

它将是经典版本,相当于该年的6.0版本。

新功能还包括:

([1)C#4.0动态类型和动态编程;

([2)多显示器支持;

(3)使用Visual Studio 2010的功能来支持TDD;

([4)支持办公室;

([5)快速搜索功能;

([6)C ++ 0x的新功能;

([7)IDE增强;

([8)使用Visual C ++ 2010创建功能区界面;

([9)基于.NET平台的新语言

根据Microsoft发布的正式文件,声称Visual Studio 2010和.NET Framework 4.0将在以下五个方面进行创新:·民主应用程序生命周期管理在组织中,应用程序生命周期管理( ALM)将涉及多个角色。但是从传统意义上讲,在此过程中每个角色并不完全相等。 Visual Studio Team System 2010将坚持为组织内的应用程序生命周期管理过程创建一个平等且共享的平台。 ·遵循新技术趋势每年,行业中的新技术和新趋势相继出现。通过Visual Studio 2010,Microsoft将为开发人员提供适当的工具和框架,以支持软件开发中的最新体系结构,开发和部署。 ·从第一个Visual Studio版本开始,开发人员感到惊讶,Microsoft的目标是提高开发人员的效率和灵活性。 Visual Studio 2010将继续关注并显着改善开发人员的核心开发经验。 ·下一代平台浪潮微软将继续投资于市场领先的操作系统,工具软件和服务器平台,以为客户创造更高的价值。使用Visual Studio 2010,您将能够在新一代的应用程序平台上为您的客户创建出色的解决方案。 ·跨部门应用程序客户将在不同规模的组织(从单个部门到整个企业)中创建应用程序。

java分析内存占用的工具_java分析内存占用的工具

Visual Studio 2010将确保支持如此广泛的应用程序开发。

使用方法:

创建第一个C项目

运行vs10,单击[新建项目],弹出以下新项目框,选择[Visual c ++]-> [win32控制台应用程序],输入项目名称和位置,或选择默认值,然后单击[确定]。 ]。

java分析内存占用的工具

弹出以下应用程序向导框,单击[下一步]

java分析内存占用的工具

选择[空项目],然后单击[完成]

java分析内存占用的工具

然后,在项目的左列中,您可以看到新创建的项目(我创建了测试),然后右键单击[源文件]-> [添加]-> [新项],如下所示:

java分析内存占用的工具

然后,弹出以下添加新项框,选择[c ++文件],输入文件名,然后单击[添加]。

java分析内存占用的工具

这时,您可以在左侧的源文件下看到新创建的文件,例如我创建的main.c文件,然后输入程序并按[Ctrl + F5]运行它。示例如下:

java分析内存占用的工具

按【F5】进行调试。

Visual Studio Community 2015是免费的,并且具有用于开发Windows,iOS,Android设备或云服务器的桌面,移动和Web应用程序的所有功能。此版本针对小型公司,初创公司,学生和开源软件开发人员开发的非企业软件。它提供了统一的客户端和服务器开发平台,支持移动跨平台开发,具有可扩展性,并具有先进而高效的编程功能。

软件简介:

VS2015版本增加了针对多个平台的新开发工具,并支持针对Win10所有平台(包括Windows10手机,Win10 PC,Xbox和HoloLens增强现实)的通用应用程序的开发。此外,通过VS2015,开发人员还可以使用诸如Apache Cordova,Xamarin或C ++之类的语言或技术来开发iOS和Android平台应用程序。对于WEB和服务器开发,可以使用Python,Node.js技术和C#,Visual Basic或F#语言。

java分析内存占用的工具_java分析内存占用的工具

Visual Studio 2015今天正式发布了正式版本。 Visual Studio 2015包含许多新功能和更新,例如通用Windows应用程序开发工具,适用于iOS,Android和Windows(包括Xamarin,Apache Cordova,Unity)的跨平台移动开发工具,可移植的C ++库和本机Android Active C ++模板等,对Cordova,Xamarin,C ++的跨平台支持都非常好。让您使用一个工具在三个平台上完成iOS,Android和Windows应用程序。它绝对是Windows 10甚至跨平台开发的首选。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-342028-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...