美文网首页
Java中类的定义以及内存分配

Java中类的定义以及内存分配

作者: honeyman | 来源:发表于2015-12-26 14:24 被阅读0次
public class Test
{
    private static int sid = 0;
    private static int x = print("this is static variable x");
    private int id;
    Test(int _id)
    {
        id = _id;
    }

    void PRINT()
    {
      System.out.println("sid: "+sid+"id"+id);
    }

    public static int print(String s)
    {
        System.out.println(s);
        return 20;
    }

    public static void main(String args[])
    {
        System.out.println("this is main");
        Test test = new Test(5);
        test.PRINT();
    }
}

通过这个简单的例子来回顾一下内存分配。
java中内存主要包含4块:

heap(堆内存):除了基本类型的值,其他被new出来的变量都存储在这里。

stack(栈内存):局部方法定义的变量都存储在这里。方法作用域结束,变量之后会被垃圾收集机制搞定。

data segment:静态变量或是常量存放区。

codesegment(方法区):存放方法。

刚才又查了查资料,发现这里面还有一些不知道知识。

静态成员变量和静态代码块与main函数的执行先后顺序是什么?

为此将代码改成如此。
执行的结果是:

this is static variable x

this is main

sid: 0 id: 5

用下图来说明内存分配过程:
1:①②③④⑤这几个在main方法执行前已经预加载好了(它们之间的顺序我还没搞懂)。
2:执行了静态方法print。打印出this is static variable x。
3:main方法执行,打印出this is main。
4:在stack分配test存储空间,为构造方法在stack中分配临时变量空间(构造方法结束,便消失),完成对象初始化。
5:接着调用PRINT方法,打印。


相关文章

  • Java中类的定义以及内存分配

    通过这个简单的例子来回顾一下内存分配。java中内存主要包含4块: heap(堆内存):除了基本类型的值,其他被n...

  • 理解JS中的原型

    动态语言和静态语言有很大的不同,比如在C++中定义类时,并不分配内存,而在动态语言中定义类时,却会分配内存。 比如...

  • 自动化内存管理

    java中自动化内存管理的自动分为两类: 为对象分配内存 回收分配给对象的内存 对象分配的几个原则: 对象优先在新...

  • JVM内存分配

    探索堆内存到底是怎么分配 简介:堆内存分配方式,分配规则讲解 Java堆内存区域的划分以及作用讲解 对象分配的规则...

  • android知识积累 - 收藏集 - 掘金

    Android 性能优化之内存泄漏检测以及内存优化(上) - 掘金在 Java 中,内存的分配是由程序完成的,而内...

  • 内存分配和回收策略

    java自动内存管理:给对象分配内存以及回收分配给对象内存 1、对象优先在Eden分配,当Eden区没有足够空间进...

  • JAVA对象的创建

    问题1:JAVA内存分配的方法? 方法一:指针碰撞,对象所需要的内存在类加载完成以后便可以确定,假设JAVA堆中内...

  • Java对象创建与内存分布

    本文主要讲述Java对象在虚拟机中创建,分配内存,初始化的过程,以及分配内存,引用对象的几种常见方式。 对象创建 ...

  • Android 内存泄漏相关总结

    一.Java内存分配结构复习 1.Java内存分配策略 上一篇Android内存管理分析总结中我们提到了Java内...

  • java栈和堆

    java中变量在内存中的分配 1、类变量(static修饰的变量):在程序加载时系统就为它在堆中开辟了内存,堆中的...

网友评论

      本文标题:Java中类的定义以及内存分配

      本文链接:https://www.haomeiwen.com/subject/fmhbhttx.html