Java继承 子类的内存模型

package subClass;
class ParentClass {
    public void fun(){
        System.out.println("ParentClass--->fun()");
    }
}

class SubClass  extends ParentClass{
    int i=100;
    String name=new String("SubClass");
    public void fun(){
        super.fun();
        System.out.println(name+"--->"+i);
    }
}

public class TestExtends {
    public static void main(String args[]){
            SubClass sub=new SubClass();
            sub.fun();
        }
}

1.super 是父类引用,当jvm加载subClass 时,将父类的引用(super)加载到子类的栈内存中。

2.this是子类的引用,当jvm加载subClass 时,将当前对象的引用(this)存放于自己的栈内存中。

3.具体调用,先查找当前子类的实现,如果没有,就查找父类是否有实现。

时间: 2025-01-06 20:08:16

Java继承 子类的内存模型的相关文章

java中JVM虚拟机内存模型详细说明

java中JVM虚拟机内存模型详细说明 2012-12-12 18:36:03|  分类: JAVA |  标签:java  jvm  堆内存  虚拟机  |举报|字号 订阅 JVM的内部结构如下图: 一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率,才能提高整个应用程序的性能. 本文将从JVM内存模型.GC工作原理,以及GC的几个关键问题进行探讨,从

Java虚拟机学习 - 体系结构 内存模型(1)

一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代" ."非堆",  它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存区域.默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小. 运行时常量池:是方法区的一部分,Class文件中除了有类的版本.字段.方法.接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加

java虚拟机:JVM内存模型

一.JVM内存模型图解 JVM 运行时数据区 (JVM Runtime Area) 其实就是指 JVM 在运行期间,其对JVM内存空间的划分和分配.网上找到两幅图如下所示(个人认为第二个图Native Method Stack应该画在Java Thead模块中):      二.各数据区域介绍 1.栈区 栈分为java虚拟机栈和本地方法栈 重点是Java虚拟机栈,它是线程私有的,生命周期与线程相同. 每个方法执行都会创建一个栈帧,用于存放局部变量表,操作栈,动态链接,方法出口等.每个方法从被调用

Java虚拟机学习 - 体系结构 内存模型

一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代" ."非堆",  它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存区域.默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小. 运行时常量池:是方法区的一部分,Class文件中除了有类的版本.字段.方法.接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加

Java虚拟机学习 - 体系结构 内存模型(转载)

一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” .“非堆”,  它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存区域.默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小. 运行时常量池:是方法区的一部分,Class文件中除了有类的版本.字段.方法.接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中

Java多线程中的内存模型

一:现代计算机的高速缓存 在计算机组成原理中讲到,现代计算机为了匹配 计算机存储设备的读写速度 与  处理器运算速度,在CPU和内存设备之间加入了一个名为Cache的高速缓存设备来作为缓冲:将运算需要用到的数据从内存复制到cache中,CPU可以在运算期间对cache进行高速的读写操作,运算结束后在从cache把数据同步回内存. Cache引出了一个新问题:缓存一致性.每个处理器有自己的cache,而他们又共享一个主内存.当多个处理器的运算任务都设计同一内存区域时,将会导致各自的缓存数据不一致.

java对象创建与内存模型总结

 1.JVM管辖的内存大致分为三个逻辑部分:java栈(Heap).java堆(JavaStack)和方法区(MethodArea).在JVM启动时创建,关闭时全部回收.  栈.本地方法栈.程序计数器:以线程为粒度,每个线程拥有自己的部分.而堆和方法区被所有线程共享.  堆:运行时的数据区域,程序(线程)运行时动态分配.  方法区:静态存储区,存储被装载到JVM中的class信息. 2.栈 i).存放基本类型的变量数据和对象的引用变量(变量本身存放在堆和常量池中). ii).java系统必须知道

Java杂记之JVM内存模型

目录 1.运行时数据区 2.多线程共享内存 1.运行时数据区 在运行Java程序的时候,JVM需要使用内存存放各式各样的数据,JVM规范将这部分内存区域叫做运行时数据区. 运行时数据区可以分为两类: 多线程共享的 这部分需要在JVM启动的时候创建好,在JVM退出的时候销毁. 线程私有的 这部分是在线程创建的时候创建,线程结束的时候销毁. 2.多线程共享内存 多线程共享内存区域主要存放两大类数据: 类数据 类数据存放在方法区(Method Area)中. 类实例(也就是对象) 实例数据存放在堆(H

java继承-子类调用父类的方法中包含子类重写的方法

# 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了... # 先看代码: public class Common { public static void main(String[] args) { Sub sub = new Sub(); sub.testSub(); } } class Parent { protected boolean test() { throw new RuntimeException(); } protected void testParent() { if