`
wangminshe89
  • 浏览: 693425 次
文章分类
社区版块
存档分类
最新评论

内存分析

 
阅读更多

在java中new出来的事物都放在堆内存中。

引用类型相当于指针。基础类型在内存分配的时候占1块内存,引用类型在内存分配的时候占2块内存。

栈、堆、常量池、代码区、静态区

1,基础数据类型直接在栈空间stack分配,方法的形参,直接在栈空间分配,当方法调用完成后从栈空间回收

  2 引用数据类型,需要用new来创建,既唉栈空间分配一个地址空间,又在堆空间heap分配对象的类变量。

  3.方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后,从栈空间回收。

  4.局部变量new出来时,在栈空间和堆空间中分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间区域等待GC回收。

  5 方法电泳时传入的基本数据类型(literal)参数,现在栈空间分配,在方法调用完成后从栈空间clear。

  6.字符串常量在data segment区域分配,static在datasegment区域分配,

  7.This在堆空间分配

  8.数组既在栈空间非配数组名称,又在堆空间分配数组实际的大小。

内存分析:

局部变量永远在栈里;new出来的东西以及C语言中的成员方法所占内存永远在堆里;静态的东西和(字符串常量)永远在数据区;剩下的代码在指定的代码区。

例如:成员变量,当你new出来一个类的时候才会去将类中的成员变量调出来,所以成员变量应该放在堆里。

实例精讲:

内存总体分为了4个部分,包括 stack segment(栈内存) 、heap segment(堆内存)、codesegment(代码区) 、data segment(数据区)。

1、其中我们程序中用关键字new出来的东西都是存放在heapsegment(堆内存);

2、程序中的局部变量存放在stack segment(栈内存),这些局部变量是在具体方法执行结束之后,系统自动释放内存资源(而heap segment中的资源需要java垃圾回收机制来处理);方法调用完后,为方法分配的所有的局部变量自动消失。

3、程序中的方法,是内存中的code segment(代码区)中的,而且是多个对象 共享一个代码空间区域;

4、static静态变量,需要放在内存中的data segment中,

  下面是一个例子程序的内存分析

 下面是内存空间分配的过程

  第二步执行过程

这是整个main方法执行过程中的内存空间分配,


分享到:
评论

相关推荐

    redline内存分析工具

    **Redline内存分析工具** Redline是由知名网络安全公司Fireeye推出的高级分析工具,专注于内存分析。内存分析在网络安全领域扮演着至关重要的角色,因为它能够帮助安全专家深入理解系统的运行状态,发现潜在的恶意...

    (二)MATJVM 内存分析工具.MAT JVM 内存分析工具.MAT JVM 内存分析工具.

    MAT(Memory Analyzer Tool)是IBM开发的一款强大的Java内存分析工具,专用于诊断和解决Java应用程序中的内存泄漏问题。MAT JVM内存分析工具可以帮助开发者深入理解Java虚拟机(JVM)的内存管理机制,通过分析堆内存...

    jProfiler7 java内存分析 linux版本

    jProfiler7是一款强大的Java性能分析工具,尤其在内存分析方面表现出色。它专为开发者设计,帮助他们在Linux环境中深入理解并优化Java应用程序的内存使用情况。本篇文章将详细探讨jProfiler7在Java内存分析上的核心...

    内存分析工具MAT

    内存分析在软件开发中起着至关重要的作用,尤其是在性能敏感的Android平台上。MAT(Memory Analyzer Tool)是一款由Eclipse基金会开发的专业Java堆内存分析工具,它同样适用于Android应用的内存管理。MAT可以帮助...

    CTF-陇剑杯之内存分析-虚拟机内存取证1

    【内存分析与虚拟机取证】 在网络安全领域,内存分析是一种重要的技术手段,它主要用于调查和取证,尤其是在网络安全事件中寻找线索。在CTF(Capture The Flag)竞赛中,这种技术经常被用来解决复杂的挑战,例如...

    Java+内存分析工具+MAT

    Java内存分析是一个关键的优化步骤,特别是在开发大型的、高性能的应用程序时。MAT(Memory Analyzer Tool)是由IBM开发的一款强大的Java堆内存分析器,它的全名是Eclipse Memory Analyzer。这款工具是开源的,完全...

    mat内存分析工具单独软件无需安装-Eclipse Memory Analyzer Version 1.7.0.rar

    MAT(Memory Analyzer Tool)是Eclipse项目开发的一款强大的Java内存分析工具,主要用于诊断Java应用程序的内存泄漏和性能问题。在标题中提到的“Eclipse Memory Analyzer Version 1.7.0.rar”是一个压缩包,其中...

    ha456.jar(IBMHeapAnalyzer)JVM内存分析工具

    【ha456.jar(IBMHeapAnalyzer)JVM内存分析工具】是一款由IBM开发的专业工具,主要用于诊断Java虚拟机(JVM)的内存问题。它能够解析和分析JVM生成的内存转储文件(通常称为heap dump或hprof文件),帮助开发者识别...

    mat内存分析工具win64.zip

    MAT,全称Memory Analyzer Tool,是由IBM开发的一款强大的Java堆内存分析工具,尤其适用于解决Java应用程序中的内存泄漏和性能优化问题。在Windows 64位操作系统环境下,MAT提供了深入洞察内存消耗情况的能力,帮助...

    JAVA内存分析 - V1.0.0.zip

    Java内存分析是Java开发中非常重要的一个环节,它关乎到应用程序的性能和稳定性。"JAVA内存分析 - V1.0.0.zip" 提供了一套工具来帮助开发者深入理解并优化Java应用程序的内存使用情况。这个压缩包包含了两个关键文件...

    websphere application server 内存分析工具

    "websphere application server 内存分析工具"就是为了帮助管理员解决这类问题而设计的。 内存分析是诊断和优化Java应用程序性能的关键步骤。在Websphere Application Server中,当服务器遇到严重问题时,例如...

    mat(mac)---jvm内存分析工具

    MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的Java虚拟机(JVM)内存分析工具,尤其适用于Mac OS X平台。这款工具可以帮助开发者诊断和解决Java应用中的内存泄漏问题,提高应用性能。MAT通过深入分析堆转储...

    Java 内存分析工具

    Java内存分析工具是Java开发过程中不可或缺的调试利器,主要用于检测和解决内存泄漏问题。内存泄漏是程序运行过程中,无法释放不再使用的内存空间,随着时间推移,会导致系统资源耗尽,性能急剧下降,甚至可能导致...

    MAT内存分析工具.zip

    MAT,全称Memory Analyzer Tool,是由IBM开发的一款强大的Java内存分析工具。它主要用于诊断Java应用程序中的内存泄漏问题,以及优化内存使用效率。MAT提供了一种直观的界面来查看堆内存快照,帮助开发者深入理解...

    64位内存分析工具

    在IT领域,内存分析是优化系统性能和诊断内存泄漏问题的关键环节。对于64位操作系统,内存分析工具的使用尤其重要,因为它们可以利用更大的内存空间。"64位内存分析工具"通常指的是专为64位Java环境设计的工具,能够...

    简单的内存分析工具(初学)

    内存分析工具是计算机科学中的一个重要概念,主要用于检测和理解程序在运行时如何使用内存。对于初学者来说,这样的工具能够帮助他们深入理解内存管理的基本原理,包括内存分配、释放、数据存储以及内存泄漏等问题。...

    mat 内存分析工具 mat 内存分析工具 part2

    mat 内存分析工具 mat 内存分析工具 mat 内存分析工具 mat 内存分析工具

    Java堆栈内存分析笔记

    Java堆栈内存分析是Java编程中的重要概念,它关乎程序的性能优化和内存泄漏的预防。堆和栈是Java内存管理的两个主要区域,它们各自承担着不同的职责。本笔记将深入探讨这两个区域的工作原理以及如何进行有效的分析。...

    ibm-java-堆内存分析工具-heapanalyzer

    IBM Java堆内存分析工具——HeapAnalyzer,是一款专为IBM J9 VM设计的强大内存分析工具,它可以帮助开发者深入理解Java应用程序的内存使用情况,检测并解决内存泄漏问题,从而提升应用性能。本文将详细介绍Heap...

    Mac OS java内存分析工具MAT

    **Mac OS上的Java内存分析工具MAT** 在Java应用程序开发中,内存管理是至关重要的,特别是对于大型、长期运行的应用程序,内存泄漏可能导致性能下降甚至系统崩溃。为了有效地诊断和解决这些问题,开发人员需要借助...

Global site tag (gtag.js) - Google Analytics