关于堆,栈等内存的使用

原创 2015年07月10日 20:31:54

  计算机的内存分类:栈内存,堆内存,方法区,本地方法区,寄存器

    栈内存:存储局部变量和正在运行的方法(main()方法等)

      堆内存:存放对象(非静态成员变量),应用对象(String等)成员方法在另外内存区

      方法区:实例方法和静态方法:

                                       实例方法区:专门存放实例方法

                                       静态变量区:专门存放静态变量

                                       静态方法区:静态方法

   具体的数据存放在其他内存

  在栈内存中先进栈main方法;
   在main方法中,当创建对象时(new class())在堆区为new class()分配一个内存区间
   当调用到类的方法时,进栈到main的前面,当方法调用结束时,出栈销毁,当main方法使用结束后出栈,但此时在堆区创建的对象内存区间不销毁,成为垃圾
 堆栈中只存引用类型的内存地址,具体数据存储在其他内存中(数据全局区)

  引用类型变量只存储数据内存地址;

  Java 执行过程:
  编译时:.Java源代码-Java编译器-.class字节码
  运行时:类加载器(加载字节码文件(静态变量(方法)编译且只编译一次))-字节码解释器(检测字节码是否损毁是或者是否被篡改)-编译器-编译执行

   静态代码块在类加载时(字节码加载)才会被调用,且只调用一次  
     声明对象时并没有加载字节码,new时才会加载字节码
     静态代码块的使命:完成静态变量的初始化
     问题四:静态变量什么时候使用?
     如果一个变量的值在所有的对象中都是相同的,可以将这个变量静态化,节省内存;

版权声明:本文为博主原创文章,未经博主允许不得转载。

内存、栈、堆的一点小总结 《程序员的自我修养》·笔记

内存、栈、堆的一点小总结 程序的内存布局 【前言】在32位系统中,大家可能认为我们可以用一个32位的指针访问任意内存地址。如下: int *p = (int *)0x12345678; ++*p...
  • hust_sheng
  • hust_sheng
  • 2015年08月24日 10:15
  • 2180

内存中栈,堆,静态区到底有什么区别?

下面有几种网上的理解,我整理一下: 一:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配...
  • lzlpxiaobin
  • lzlpxiaobin
  • 2015年09月12日 19:49
  • 1748

解释Java中内存中的栈(stack)、堆(heap)和静态存储区的用法

通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、...
  • xz_src
  • xz_src
  • 2017年06月22日 11:45
  • 879

计算机内存中的堆与栈

一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap) — 一般...
  • fengxinlinux
  • fengxinlinux
  • 2016年05月30日 21:16
  • 2071

关于堆和栈的那些事

编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪...
  • yingfengzhaozhan
  • yingfengzhaozhan
  • 2016年02月28日 14:06
  • 629

Android内存优化六:系统中使用堆和栈管理内存的区别

一直对系统中堆和栈的使用原则不太理解,在网上看到这篇文章,非常不错! 转载地址:http://bbs.csdn.net/topics/390147637 在计算机领域,堆栈是一个不容忽视的概念,我...
  • cbk861110
  • cbk861110
  • 2016年03月03日 13:47
  • 1530

关于"堆和栈"的几个问题

关于"堆和栈"的几个问题
  • duan19920101
  • duan19920101
  • 2016年03月26日 23:11
  • 607

五大内存分区,堆与栈的区别

五大内存分区    在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变...
  • tiger406
  • tiger406
  • 2006年09月07日 22:39
  • 4706

JAVA中数组的内存(栈和堆)

JAVA对内存空间的划分五部分:栈 堆 方法区 本地方法区 寄存器今天主要谈栈和堆栈内存:存储的都是局部变量。 只要是在方法中定义的变量都是局部变量,一旦变量的生命周期结束,该变量就被释放。 (压...
  • yusenDong
  • yusenDong
  • 2017年02月01日 19:51
  • 1081

数据结构中的栈和堆,计算机系统内存中的栈和堆的理解

数据结构中的栈和堆,计算机系统内存中的栈和堆的理解
  • mingge591
  • mingge591
  • 2016年04月13日 11:26
  • 1201
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于堆,栈等内存的使用
举报原因:
原因补充:

(最多只允许输入30个字)