方法与对象内存分析

---方法区内存:在类加载的时候,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;
    }
}

运行结果:

原文地址:https://blog.51cto.com/14472348/2475860

时间: 2024-10-06 14:07:20

方法与对象内存分析的相关文章

Java面向对象_对象内存分析—值传递和引用传递

对象内存分析,我一直学的比较模糊,今天抽空整理一下,希望能理清. 先说一下,内存分析从何而来,这对于我们这些刚接触java的人来说都比较模糊,就从new关键字说起吧. new关键字表示创建一个对象或者说是实例化对象或者说是申请内存空间,所有程序运行都需要内存来存储数据,这样内存的概念就出来了.举个例子说明:定义一个类Person,属性:char a;int sge;那么创建一个对象申请的内存空间就是所有属性所占字节之和,为6个字节. 详细理一下对象在内存中的结构: Person p=new Pe

为什么要有get方法?-多态内存分析的应用

在处理java类中的成员变量时,并不是采用运行时绑定,而是一般意义上的静态绑定.所以在向上转型的情况下,对象的方法可以找到子类,而对象的属性还是父类的属性.代码如下:Java代码 public class Father { protected String name="父亲属性"; public void method() { System.out.println("父类方法,对象类型:" + this.getClass()); } } public class S

(一)Python入门-5函数:03函数也是对象-内存分析

函数也是对象,内存底层分析: Python中,“一切都是对象”.实际上,执行def 定义函数后,系统就创建了相应的函数 对象.我们执行如下程序,然后进行解释: 1 #函数也是对象 2 def print_star(n): 3 print('*'*n) 4 5 print_star(3) 6 c = print_star 7 c(3) 8 9 print(id(print_star)) 10 print(id(c)) 11 print(type(c)) 上面代码执行 def 时,系统中会创建函数对

java执行程序的内存分析系列专栏二之static变量和方法内存分析

昨天写了简单的聊了下java执行程序时简单的内存划分,今天我们接着往下聊,聊聊static变量和方法的内存分析. 1.static变量和方法的第一个特性内存分析 statiic变量和方法的第一个特性能通过类名.static变量和类名.static方法的形式调用,而普通只能对象的形式调用.但具体为什么是这样的,这得分析static变量和方法他们在内存中怎样分配的,因此在这里我首先建立一个学生类,里面有一个普通成员变量和一个静态成员变量以及一个普通方法和一个成员方法,然后建立了一个测试学生的类. 1

View的post方法导致的内存泄漏分析

简述: 写这篇文章的缘由是最近项目中查内存泄漏时,发现最终原因是由于异步线程调用View的的post方法导致的. 为何我会使用异步线程调用View的post方法,是因为项目中需要用到很多复杂的自定义布局,需要提前解析进入内存,防止在主线程解析导致卡顿,具体的实现方法是在Application启动的时候,使用异步线程解析这些布局,等需要使用的时候直接从内存中拿来用. 造成内存泄漏的原因,需要先分析View的post方法执行流程,也就是文章前半部分的内容 文章内容: View#post方法作用以及实

JVM的内存区域划分,对象实例化分析

一.JVM程序具体执行过程 由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分.在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:                                     如上图所示,Java源代码文件(.java后缀)经过Java编译器编译成为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行.在整个程序执行过程中,JVM会用一

对象的简单内存分析

在如今学习的过程中,我们更多的是在练习如何使用各种方法或某种套路,例如需要设计某个app的时候,我们可能会说我们之前设计过的模型中直接套过来使用,或者在网上需找类似的demo,随着时间和经验的积累,我们在这一方面越来越得心应手,以后一直是copy.copy等,但对一些简单的本质东西不甚了解了,虽然这些东西也可以不必去知道,但我认为多了解一些基本的东西还是有好处的,下面就来简单的说一些对象的内存的问题: 1.我们先来创建一个Person类: #import <Foundation/Foundati

六、对象和内存分析

面向过程思想:         面向过程通过过程组成编程,遇到事情,第一步,第二步....,不需要协作,适合小规模的程序,比如开车. 面向对象思维       面向对象通过对象组成编程,比如造车,第一步,第二步....,无法确定,需要大规模的协作,有设计者的思维,拆分成一个个个体,造轮胎的厂家.发动机的厂家.车壳.座椅 .挡风玻璃等等.当然,分成这些块以后,就是一个个的过程去实现. 综上:遇到复杂问题,用面向对象思考,找名词,确定各个名词的关系:面向过程思考,找动词,在面向对象设计好了以后,底层

C++/C#中堆栈、对象内存模型、深浅拷贝、Array.Clone方法

转载自:http://blog.csdn.net/jarvischu/article/details/6425534 目录 1.      C++/C#中对象内存模型..................................................................................................... 1 1.1.       栈内存与堆内存.............................................