方法与对象内存分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法与对象内存分析相关的知识,希望对你有一定的参考价值。

---方法区内存:在类加载的时候,class字节码代码段被加载到该内存空间中
---栈内存(局部变量):方法代码段片段执行的时候,会给该方法分配内存空间,在栈内存中压栈,执行完毕之后释放内存空间,做弹栈操作.
---堆内存(实例变量):new的对象在堆内存中存储.
方法内存分析

技术图片

public class Hello {
    public static void main(String[] args) {
        int a = 100;
        int b = 200;
        int res = sum(a, b);
        System.out.println(res);
    }
    public static int sum(int i,int j)
    {
        int result = i + j;
        int num = 3;
        int res2 = devide(result, num);
        return res2;
    }
    public static int devide(int x,int y)
    {
        int z;
        z = x / y;
        return z;
    }
}

运行结果:
技术图片

对象内存分析
技术图片

public class Hello2 {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Student stu = new Student();
        System.out.println("姓名:" + stu.name);
        System.out.println("学号:" + stu.no);
        System.out.println("性别:" + stu.sex);
        System.out.println("年龄:" + stu.age);
        Student s = new Student();
        s.no = 10;
        s.sex = true;
        s.age = 20;
        s.name = "jack";
    s.add.city = "北京";
    s.add.street = "朝阳街道";
    s.add.zipcode = "000001";
        System.out.println("姓名:" + s.name);
        System.out.println("学号:" + s.no);
        System.out.println("性别:" + s.sex);
        System.out.println("年龄:" + s.age);
        System.out.println("城市:" + s.add.city);
        System.out.println("街道:" + s.add.street);
        System.out.println("邮政编码:" + s.add.zipcode);
    }
    public static class Student {
        String name;
        int no;
        boolean sex;
        int age;
        Address add = new Address();
    }
    public static class Address {
        String city;
        String street;
        String zipcode;
    }
}

运行结果:
技术图片

以上是关于方法与对象内存分析的主要内容,如果未能解决你的问题,请参考以下文章

Java 垃圾回收 - 收集算法

Java类与对象-JV内存分析

46栈内存溢出内存区域(程序计数器Java 虚拟机栈本地方法栈Java 堆方法区直接内存内存溢出)与内存溢出(对象实例化分析)

JVisualVM简介与内存泄漏实战分析

JVisualVM简介与内存泄漏实战分析

成员变量与局部变量的区别