JAVA变量在内存中的分配

变量是程序中最基本的存储单元,从本质上讲,变量其实是内存中的一小块区域。所以要为其分配一定的存储空间。

变量的类型

按数据类型:

  1. 基本数据类型
  2. 引用数据类型

按声明的位置:

  1. 局部变量
  2. 成员变量

程序在计算机内存的分布:

栈区:

由编译器自动分配释放,主要存放Java程序运行时所需的局部变量、方法的参数、对象的引用以及中间运算结果等数据。其操作方式类似于数据结构的栈。

堆区:

不是系统为程序自动分配的,是程序执行过程中有new语句为变量分配的,主要存放Java程序运行时创建的所有引用类型,即使指向堆空间的指针变量消失,new语句分配的空间也不会消失。它与数据结构中的堆不一样,但分配方式类似于链表。

代码区:

主要存放Java的代码,程序结束由系统释放。

数据区:

主要存放静态变量及全局变量,程序结束由系统释放。

结合实例来看:

public class Test{

	public static void main(String args[]){

		Test test = new Test();
		int Date = 9;
		BirthDate d1 = new BirthDate(7,7,1970)
	}
}

总结:

之前我们在讲设计模式的讲过这方面的内容,但是当时不是怎么理解,现在正好看J2SE,而且C++程序设计中也有讲过,现在将他们结合起来,简单理解一下,再重新听视频的讲解,简单多了,所以知识是再不断的重复中学习的。

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

时间: 2024-09-29 23:30:43

JAVA变量在内存中的分配的相关文章

JVM存储位置分配——java中局部变量、实例变量和静态变量在方法区、栈内存、堆内存中的分配

Java中的变量根据不同的标准可以分为两类,以其引用的数据类型的不同来划分可分为“原始数据类型变量和引用数据类型变量”,以其作用范围的不同来区分可分为“局部变量,实例变量和静态变量”. 根据“Java中的变量与数据类型”中的介绍,“变量是在内存中分配的保留区域的名称.换句话说,它是一个内存位置的名称”,也就是说我们通过这个变量名字就可以找到一个指向这个变量所引用的数据的内存指针,根据变量的类型我们可以知道这个指针之后的几个字节里存储了这个变量所引用的数据. 所以,了解变量在方法区.栈内存.堆内存

Java变量以及内存分配

Java变量以及内存分配(非常重要) 堆栈 静态存储区域 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收.注意它与数据结构中的堆是两回事,分配方式倒是类似于链表. 3.全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的

java中静态变量在内存中的位置

java程序在内存中的存储分配情况: 一.堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 栈区: 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问. 3.栈分为3个部分:基本类型变量区.执行环境上下文.操作指令区(存

对象类型在内存中的分配

今天,我们来讲讲对象类型在内存中的分配! 对象类型和整型.字符串等类型一样,也是PHP中的一种数据类型,在程序中存储不同类型的数据,在程序运行时它的每一部分内容都要加载到内存中再被使用.那么对象类型的数据在内存中是如何分配的呢?咱们先来了解下内存结构,逻辑上内存大体被分为四段,分别为:栈.堆.数据段和代码段,程序中不同类型数据的声明将会被存放在不同的内存段里面,每段内存的特点是这样的: 1.栈 栈的特点就是空间小但被CPU访问的速度快,适合存放程序中临时创建的变量.由于栈的先进后出的特点,所以栈

面试经常问的C语言变量在内存中的分布(VC6.0)

C/C++变量在内存中的分布在笔试时经常考到,虽然简单,但也容易忘记,因此在这作个总结,以加深印象. 一: #include <stdio.h> #include <malloc.h> int g_i = 100; int g_j = 200; int g_k, g_h; int main() { const int MAXN = 100; int *p = (int*)malloc(MAXN * sizeof(int)); static int s_i = 5; static i

PHP对象类型在内存中的分配

对象类型和整型.字符串等类型一样,也是PHP中的一种数据类型.都是在程序中用于存储不同类型数据使用的,在程序运行时它的每部分内容都要先加载到内存中再被使用.那么对象类型的数据在内存中是如何分配的呢?先来了解一下内存结构.逻辑上内存大体被分为四段,分别为栈空间段.堆空间段.初始化数据段和代码段,程序中不同类型数据的声明将会被存在不同的内存段里面.每段内存的特点如下.①.栈空间段栈的特点是空间小但被CPU访问的速度快,是用户存放程序中临时创建的变量.由于栈的后进先出特点,所以栈特别方便用来保存和恢复

程序在内存中的分配方式

1 桟区(stack):由编译器自动分配和释放,存放函数的参数值,局部变量的值,其操作方式类似于数据结构中的栈. 若申请的内存小于系统所剩内存则成功,否则就会发生栈溢出错误. 栈的增长方向是向下的,通常栈的初始化指针指向内存的最高地址,它是连续的.系统自动分配,因此速度很快. 在函数调用时,第一个进栈的是主函数的下一条指令的地址,然后是各个函数的参数,参数从右向左进栈,然后是函数中的局部变量.静态变量是不入栈的. 2 堆区(heap):一般有程序员分配和释放,若不释放,最后由操作系统回收. 它与

Java对象在内存中的存储

Java对象在内存中的存储分3块区域 1.对象头(Header) 2.实例数据(Instance Data) 3.对齐填充(Padding) 一.对象头 哈希码.GC分代年龄.锁状态标志.线程持有的锁.偏向线程ID.偏向时间戳 类型指针 二.实例数据 各种类型的字段(父类继承下来的.子类自身定义的) 相同宽度的字段会被分配到一起 三.对齐填充 没有特别含义,仅仅起着占位符的作用(8字节的整数倍)

[转组第8天] | 变量在内存中的位置和访问方式

2018-05-05 <C++反汇编和逆向技术>第七章 变量在内存中的位置和访问方式 读书笔记 1.全局变量和局部变量的区别 全局变量属于进程作用域,也就是说,在整个进程中都能够访问到这个全局变量.静态变量属于文件作用域,在当前源码文件内可以访问到:局部变量属于函数作用域,在函数内部可以访问到:在"{}"语句块内定义的变量,属于块作用域,只能在定义变量的"{}"快内访问到. 全局变量在内存中的地支顺序是先定义的变量在低地址,后定义的变量在高地址. 全局变