全面剖析java分配内存

全面剖析java分配内存

ID:42505264

大小:563.81 KB

页数:13页

时间:2019-09-16

全面剖析java分配内存_第1页
全面剖析java分配内存_第2页
全面剖析java分配内存_第3页
全面剖析java分配内存_第4页
全面剖析java分配内存_第5页
资源描述:

《全面剖析java分配内存》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java内存分配全面浅析分类:技术文章201Z06-1109:464310人阅读评论⑹收藏举报iavainteqerivm存储strinqdate本文将山浅入深详细介绍Java内存分配的原理,以帮助新于更轻松的学习Java,这类文章网上冇很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题询首先要知道的是Java程序运行在JVM(JavaVirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM屮进

2、行的,JVM是内存分配原理的基础与前提。简单通俗的讲,一个完整的Java程序运行过程会涉及以下内存区域:I寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。I栈:保存局部变量的值,包括:1.用来保存基本数据类型的值;2.保存类的实例,即堆区对象的引用(指针)。也可以用來保存加载方法时的帧。I堆:用來存放动态产生的数据,比如new出來的对象。注意创建出来的对彖只包含属于各H的成员变最,并不包括成员方法。因为同一个类的对象拥冇各自的成员变最,存储在各自的堆屮,但是他们共享该类的方法,并不是每创建一个对彖就把成员方法复制一次。I常量池:JVM为每个已加载的类型维护一个常暈池,常暈池就是

3、这个类型用到的常暈的一个冇序集合。包括直接帘疑(基本类烈,String)和对其他类型、方法、字段的符号引用(1)。池中的数据和数组一样通过索引访问。由于常屋池包含了一个类型所冇的对其他类型、方法、字段的符号引用,所以常屋池在Java的动态链接屮起了核心作用。常量池存在于堆中。I代码段:用來存放从硬盘上读取的源程序代码。I数据段:用來存放static定义的静态成员。F面是内存表示图:Java内存分配全面浅析分类:技术文章201Z06-1109:464310人阅读评论⑹收藏举报iavainteqerivm存储strinqdate本文将山浅入深详细介绍Java内存分配的原理,以帮助新于更轻松的学

4、习Java,这类文章网上冇很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题询首先要知道的是Java程序运行在JVM(JavaVirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM屮进行的,JVM是内存分配原理的基础与前提。简单通俗的讲,一个完整的Java程序运行过程会涉及以下内存区域:I寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。I栈:保存局部变量的值,包括:1.用来保存基本

5、数据类型的值;2.保存类的实例,即堆区对象的引用(指针)。也可以用來保存加载方法时的帧。I堆:用來存放动态产生的数据,比如new出來的对象。注意创建出来的对彖只包含属于各H的成员变最,并不包括成员方法。因为同一个类的对象拥冇各自的成员变最,存储在各自的堆屮,但是他们共享该类的方法,并不是每创建一个对彖就把成员方法复制一次。I常量池:JVM为每个已加载的类型维护一个常暈池,常暈池就是这个类型用到的常暈的一个冇序集合。包括直接帘疑(基本类烈,String)和对其他类型、方法、字段的符号引用(1)。池中的数据和数组一样通过索引访问。由于常屋池包含了一个类型所冇的对其他类型、方法、字段的符号引用,

6、所以常屋池在Java的动态链接屮起了核心作用。常量池存在于堆中。I代码段:用來存放从硬盘上读取的源程序代码。I数据段:用來存放static定义的静态成员。F面是内存表示图:上图中大致描述了Java内存分配,接下來通过实例详细讲解Java程序是如何在内存中运行的(注:以下图片引用自尚学堂马士兵老师的J2SE课件,图右侧是程序代码,左侧是内存分配示意图,我会一-加上注释)。预备知识:1・一个Java文件,只要冇main入口方法,我们就认为这是一个Java程序,可以单独编译运行。2•无论是普通类型的变虽还是引用类型的变呈(俗称实例),都可以作为局部变屋,他们都可以出现在栈中。只不过普通类型的变最

7、在栈中直接保存它所对应的值,而引用类型的变疑保存的足一个指向堆区的指针,通过这个指针,就可以找到这个实例在堆区对应的对象。因此,普通类型变量只在栈区占用一块内存,而引用类型变最要在栈区和堆区各占一块内存。示例:训I川过和演示(1)堆内存12000Testtest=newTest();intdate=9;BirthDatedl=newBirthDate(7z7,1970);BirthDated2=newBirthDate(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。