`

java中对象、成员变量、静态变量、方法的内存分配

阅读更多
java中内存主要包含4块,即heap(堆内存)、stack(栈内存)、data segment(静态变量或是常量存放区)、codesegment(方法区).
堆内存中存放的是new出的对象,new出的对象只包含成员变量。
栈内存中:存放的是局部成员变量。对于基本的数据类型存放的是基本变量的值,而对于对象变量,存放的是堆内存的地址。
静态、常量区:存放的是静态变量(类变量)或是常量。
方法区:存放的是对象的方法。因此即使new出多个对象也是只是存在一个方法。


A a = new A(); A中含有一个work方法,2个成员变量a,b。那么对应的内存分配为
则 a是分配在栈内存中。里面存放了一个指向堆内存中存放的new A()的地址。
new A()会导致在堆内存中分配一块空间,该内存中的A对象同时会含有a和b。
work()方法会在codesegment区中分配内存。
如果此时 A b = a;则表示把a的值复制给b,即b的值为a中保存的地址
分享到:
评论

相关推荐

    Java成员变量局部变量静态变量成员方法全局方法等概念的区

    这可能是指文件内容详细阐述了这些概念之间的差异,如成员变量和局部变量的生命周期、作用域、初始化时间以及静态变量与实例变量的共享特性,以及成员方法和静态方法的调用方式等。 理解这些基本概念对于编写有效...

    Java中的静态变量静态方法静态块与静态类.docx

    Java 中的静态变量、静态方法、静态块和静态类 Java 中的静态变量、静态方法、静态块和静态类是 Java 编程语言的四个重要概念,它们之间存在着紧密的关系。下面将对这四个概念进行详细的介绍。 一、静态变量...

    java 使用静态成员变量计算内存中实例化的对象数目

    在Java编程语言中,了解如何计算内存中实例化对象的数量是一项重要的技能,这对于优化程序性能、理解和管理资源分配至关重要。本篇文章将详细讲解如何利用静态成员变量来追踪和计算一个类在运行时创建的实例数量。 ...

    Java中的成员变量

    这意味着,不论创建多少个对象,静态变量只在内存中占用一个存储单元,所有的对象都共享这个单一的存储位置。因此,对静态变量的修改会影响到所有对象。静态变量可以通过类名直接访问,例如`Static_Demo.j`,而无需...

    Java 成员变量和局部变量

    4. **this关键字**: 在方法中,使用`this`关键字可以引用当前对象的成员变量,以区分方法参数或其他局部变量。 **局部变量** 局部变量是在方法、构造器或初始化块中声明的变量。它们只在声明它们的代码块内有效,...

    java 利用反射获取内部类静态成员变量的值操作.docx

    本文将详细介绍如何使用Java反射技术来获取内部类中的静态成员变量的值。 #### 二、背景知识 在深入探讨之前,我们需要了解几个基本概念: 1. **内部类**:内部类是一种特殊的类,定义在另一个类(外部类)的内部。...

    java成员变量覆盖问题

    在Java编程语言中,成员变量是指定义在类中的变量,它们可以在类的方法、构造器或类的其他成员方法中访问和操作。成员变量的覆盖(有时会被误认为是“重写”)是理解Java继承机制的关键之一。本文将详细解释成员变量...

    关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍

    详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序

    java中静态与非静态的变量定义与使用

    总结起来,Java 中的静态变量与非静态变量之间的主要区别在于它们的生命周期、存储位置以及访问方式。静态变量是类级别的,与对象无关,而实例变量是对象级别的,每个对象都有自己的一份副本。理解这两种变量类型...

    java内存对象分配过程研究

    本文将基于Java虚拟机(JVM)的内存模型,详细探讨对象在Java中的内存分配过程。 #### 二、Java虚拟机内存区域 Java虚拟机(JVM)是Java程序运行的基础平台,其内部有一套完整的内存管理机制。根据JVM规范,JVM的内存...

    Java成员变量类变量局部变量的区别共5页.pdf.zip

    Java编程语言中有三种主要的变量类型:成员变量(也称为实例变量)、类变量(也称为静态变量)和局部变量。理解这些变量之间的区别是学习Java基础的重要部分,这对于编写高效、可维护的代码至关重要。 1. 成员变量...

    java之中的静态变量与静态方法的继承与覆盖问题.doc

    在Java编程语言中,静态变量(也称为类变量)和静态方法(也称为类方法)是由`static`关键字修饰的成员变量和成员方法。它们的特点在于不依赖于对象的存在,可以通过类名直接访问。 #### 静态变量的特点 - **共享...

    静态方法,静态成员变量的调用

    在Java编程语言中,静态方法和实例方法是两种不同类型的成员,它们在使用和功能上有所区别。静态方法是属于类级别的,而实例方法是属于对象级别的。理解这两种方法的特性对于编写高效的代码至关重要。 首先,调用...

    Java static修饰成员变量

    在这个例子中,`count`是静态变量,两个对象`obj1`和`obj2`共享同一个`count`值。因此,对`count`的修改会影响到所有对象。 其次,`static`还可以修饰方法,这样的方法称为静态方法或类方法。静态方法不依赖于任何...

    java-静态变量方法块

    在内存中,静态变量存储在方法区(在Java 8及之后的版本中称为元空间),而实例变量则存储在堆内存中。静态方法和非静态方法的调用也遵循不同的规则,静态方法直接通过类名调用,而非静态方法必须先创建对象,然后...

    静态成员变量和静态成员函数

    - 类静态变量允许创建一种共享状态,所有对象都可以访问,但不依赖于特定的对象实例。 - 静态成员函数可以作为工具方法,处理类的静态属性,或者执行与对象无关的操作。 需要注意的是,过度使用静态成员可能会导致...

Global site tag (gtag.js) - Google Analytics