`
endual
  • 浏览: 3560970 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java内存解析(转)

    博客分类:
  • java
 
阅读更多

 

 

Java内存解析

分类: Java 327人阅读 评论(13) 收藏 举报

栈、堆、常量池等虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,简单讲解Java内存分配方面的知识。

首先我们先来讲解一下内存中的各个区域。

 stack(栈):存放基本类型的数据和对象的引用,即存放变量。

如果存放的事基本类型的数据(非静态变量),则直接将变量名和值存入stack中的内存中;

如果是引用类型,则将变量名存入栈,然后指向它new出的对象(存放在堆中)。

heap(堆):存放new产生的数据。

data segment:分为静态域和常量域。

静态域:

存放在对象中用static定义的静态成员(即静态变量,同理,如果该静态变量是基本类型则将变量名和值存入静态域,如果是引用类型则指向new出的对象)。

常量池:

常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:类和接口的全限定名;字段的名称和描述符;方法和名称和描述符。

code segment:存放代码。

 

下面我来举几个简单的小例子来让大家认识一下这几个区域具体存放的内容:

注:例1和例2中大家要注意String类型不是基本数据类型,所以它可以创建对象,并且它的值是放在常量池中的。

例1. 非静态和静态变量的创建:

String str = "abc";  static Int a = 10;  //创建String类型的变量str;创建Int类型变量a

内存解析:

这里的str是非静态变量所以将其放入到栈中,而静态变量a则需要放入静态域中,对于变量值"abc"和10则都应该放入到常量池当中

 

例2. 对象的创建:

String str=new String("abc");  //创建String类型的对象str

内存解析:

这里的str是String类型的对象,所以放入栈中,而new出来的东西则放入到堆中,对于初始值"abc"则放入到常量池中即可。

 

例3. 数组的创建

Int s[] = new Int[3];s[0]=3;s[1]=2;s[2]=3;

内存解析:

这里的s[]是一个数组变量,所以放入到栈中,new出来的东西还是放入到堆中,最后的每个元素的值则放入到常量池当中。

 

分享到:
评论

相关推荐

    java内存解析(讲的很清楚的视频)

    java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存...

    Java内存分配全面解析

    Java内存分配全面解析 Java程序在执行过程中,其内存分配主要涉及到JVM(Java Virtual Machine,Java虚拟机)的不同区域。这些区域包括寄存器、栈、堆、常量池、代码段和数据段。理解这些内存区域的工作原理对于...

    JAVA解析DBC文件

    在JAVA中解析DBC文件,首先需要读取文件内容,然后按照DBC的语法规则进行解析。这通常涉及到字符串分割、正则表达式匹配等操作。解析过程中要注意处理大小端问题,因为在不同的硬件平台上,数据存储的顺序可能不同。...

    java完美解析pdm

    Java完美解析PDM,这是一种利用Java编程语言对Power Designer创建的PDM(Physical Data Model,物理数据模型)文件进行解析的技术。PDM是数据库设计工具Power Designer中的一个重要概念,它通常包含了数据库表、列、...

    文件上传,java解析excel和csv 转javabean

    本篇文章将深入讲解如何使用Java解析Excel(包括Excel 2003和2007格式)和CSV文件,并将解析的数据映射到Java Bean,以便后续的数据处理和存储。 首先,我们需要了解如何在Java中处理文件上传。在Servlet环境中,...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

    java 解析 json文件 java 解析 json文件

    Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...

    EPUB 解析 (java)

    在Java编程语言中,EPUB解析通常通过特定的库或框架来实现,以方便开发者处理这种开放标准的电子书格式。FBreader是一个知名的开源电子书阅读器项目,其源码中包含了对EPUB文件的支持。在本项目中,我们讨论的是从...

    java解析nc格点预报

    Java解析NC格点预报涉及到的是气象学中的数值预报(Numerical Weather Prediction, NWP)领域,结合了计算机科学与大气科学。NC文件是NetCDF(Network Common Data Form)的缩写,是一种用于存储多维科学数据的标准...

    Java解析SO(ELF)文件

    本篇文章将详细探讨如何使用Java来解析SO(ELF)文件,包括文件头部、程序头部表和节区头部表等关键组成部分。 首先,我们需要理解ELF文件格式的基本概念。ELF是一种广泛使用的Unix和类Unix系统中的可执行文件、...

    JAVA中的面向对象与内存解析

    接下来,我们转向内存解析,这是理解Java程序运行时行为的关键。在Java中,内存分为堆内存和栈内存。栈内存主要存储基本类型和对象引用,生命周期短,随着方法调用的结束而销毁。堆内存则用于存储所有对象实例,其...

    java心电图xml解析.zip

    Java XML解析是Java开发中的一项重要技能,尤其是在处理结构化数据时。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换和文档存储等领域。本压缩包“java心电图xml解析....

    java解析pdf

    在Java中解析PDF文件是一项常见的任务,特别是在处理用户提交的文档、数据分析或自动化报告等场景下。本篇文章将深入探讨如何使用Java来解析PDF文件,并提供一个实际的示例。 Java解析PDF主要依赖于第三方库,如...

    Java 内存分配全面解析

    Java内存分配全面解析 Java程序在执行过程中,其内存分配主要涉及到JVM(Java Virtual Machine,Java虚拟机)的不同区域。这些区域各自负责不同的任务,共同确保程序的正常运行。以下是对各个内存区域的详细解释: ...

    java在线解析xml

    Java在线解析XML是一种常见的编程任务,特别是在处理Web服务、数据交换或者从XML文件中提取信息时。XML(Extensible Markup Language)是一种结构化数据格式,它允许数据以自定义的标签进行组织,使得数据的传输和...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...

    java ocr 图片解析

    综上所述,实现Java OCR图片解析涉及多个步骤,从图像处理到字符识别,再到结果后处理,都需要深入理解相关技术和工具。通过不断优化,我们可以构建出高效、准确的OCR系统,满足各种应用场景的需求。

    Java解析大数据量Excel,可解析1048576行excel

    总的来说,Java结合Apache POI库,尤其是使用SXSSF模型,可以有效地处理和解析百万行的Excel文件,提供高效且内存友好的解决方案。在实际项目中,应根据具体情况选择最适合的解析策略,以确保程序的稳定性和性能。

    java 解析XML性能对比分析Demo

    在"Java解析XML性能对比分析Demo"中,你可以通过运行这些解析器的示例代码,观察它们在处理相同XML文件时的内存占用、处理速度等指标,以了解哪种解析方式更适合你的项目需求。例如,如果你处理的XML文件较小,DOM或...

    全网最硬核 Java 新内存模型解析与实验单篇版.doc

    全网最硬核 Java 新内存模型解析与实验单篇版 Java 内存模型(JMM,Java Memory Model)是 Java 语言的核心组件之一,它定义了 Java 程序中内存的行为和语义。本文将深入探讨 JMM 的设计原理和实现机理,通过结合...

Global site tag (gtag.js) - Google Analytics