zoukankan      html  css  js  c++  java
  • Java类和对象的内存分配

    • 类的加载时机:

    1、创建对象

    2、调用类的静态成员

    3、加载子类

    • 类在实例化后的内存分配

    1、每次创建对象时,都需要进行加载创建2个操作:

    ① 先去判断需要的类是否已经加载,如果已经加载了,则无需再加载,如果没有加载,则需要通过类加载器加载类信息到方法区

    ② 在堆中创建新对象

    2、栈、堆、方法区的存储

    栈:对象的引用、局部变量

    堆:对象和全局变量(属性)

    方法区:类信息、属性信息、方法信息

    3、方法的调用机制

    每次调用方法,伴随着“方法入栈”操作,也就是栈中为该方法分配了一块空间,用于保存该方法中涉及到的变量

    每次方法调用结束,伴随着“方法出栈”操作,也就是栈中分配的空间被释放了

    在类的方法调用过程中,首先判断方法区是否存在该方法,存在则方法入栈,调用结束后出栈。

    • 对象在调用类方法时的内存分配

    Java中方法传递参数是按值传递

    如果是基本类型,则值 代表元素内容

    如果是引用类型,则值 代表地址号

    特殊情况

    在调用的方法中对引用型变量形参重新实例化,改变的是地址,则不会影响实参,即传值进去没用重新实例化为新地址。

    class Test{
          public void method(Person persion){
            person=new Person();
            person.name = "Zane";
            System.out.println(p.name);    // 输出为Zane
        }
    }
    class Person{
        String name;
    }
    public static void main(String[] args){
        Test t = new Test();
        Person p = new Person();
        p.name = "Mort";
        t.method(p);
        System.out.println(p.name);    // 输出为Mort
    }
    • 基本类型调用方法内存分配

  • 相关阅读:
    systabcontrol32
    winform 进程唯一,打开第二个激活第一个进程的窗体显示
    winform在 Xp下杀死进程
    安装包创建桌面快捷方式
    [最短路/线段树大法优化DIJ] 【模板】单源最短路径(标准版)
    [线段树模板题] 线段树2
    [线段树优化应用] 数星星Star
    [倍增思想/变种最短路] 跑路
    [DP/变种背包] SOFTWARE
    [前缀和/数论] 数列
  • 原文地址:https://www.cnblogs.com/MWCloud/p/11163320.html
Copyright © 2011-2022 走看看