java内存分析
来源:互联网 发布:网络机顶盒怎么连接 编辑:程序博客网 时间:2024/05/29 19:01
在JAVA中,内存的管理分为Stack—栈,Heap—堆,DataSegment—数据段,Code Segment—代码段。
首先,先明确每一块区域存放的是什么内容。
Stack:可以翻译为栈区域,存放一些基本数据类型,局部变量,常量,对象的引用地址。
基本的数据类型为最基本的四类八种类型。如下图所示
指令代码就是一些函数和方法。
常量和对象的引用地址可以理解为定义的变量。但是只是引用地址,真正new出来的存放在heap中,即堆内存中。
Heap:存放对象实例,即在代码中new出来的东西全部放在此处。
DataSegment:数据段,存放静态常量和字符串常量。
CodeSegment:代码段,存放代码。
简单的内存分析图形如下红色标识
栈和堆的一些特点我通过图形进行了一些简单的对比
下面就以一个简单的实例分析下内存的存取
- class Person{
- int id;
- int age;
- Person(int age, int id){
- this.age=age;
- this.id=id;
- System.out.println("ID:"+id+"年龄"+age);
- }
- }
- public class Test01 {
- public static void main(String[] args) {
- Person per=new Person(25,123);
- }
- }
函数首先从mian执行
先创建一个per的局部变量在栈中
通过new创建一个Perosn的动态内存,在堆中分配空间,
最后调用构造函数,通过this指针自身给id和age赋值,并将pe局部变量的引用指向对应的堆空间
通过内存分析,我们可以看出,创建对象,实质上在堆中动态的给变量分配一块内存空间,并将变量指向堆空间,也成为引用。
0 0
- Java的内存分析
- Java内存分析图
- Java内存分析小节
- Java 程序内存分析
- Java 程序内存分析
- Java 内存溢出分析
- java内存分析
- java内存分析
- java内存分析【精辟】
- JAVA内存分析笔记
- java内存模型分析
- Java内存分析
- java的内存分析
- JAVA基础--内存分析
- java内存分析
- Java内存管理分析
- Java内存泄漏分析
- java内存原型分析
- MFC消息机制简析
- AGENT时区问题
- Linux下查看Nginx Apache MySQL的并发连接数和连接状态
- Oracle中插入大量测试数据
- autotools 使用流程
- java内存分析
- 【大话设计模式——学习笔记(3)】单一责任原则
- vc++6.0生成exe文件不能在非VC环境下应用 (
- 修改mysql数据库为 utf-8
- fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
- windows下部署svn+apache
- 学习iOS开发的第21天
- 一切成功源于积累——20140402 耍宝的美日 搭塔 0402-0403-0404
- eclipse中常用的快捷键