美文网首页
JAVA创建类时的内存变化

JAVA创建类时的内存变化

作者: Fizor | 来源:发表于2017-01-16 20:15 被阅读0次

<p>Java内存分五个区域,其中两个区域是线程公有的,分别是堆区和方法区(常量池在方法区,jdk1.7之后独立出来),剩下三个区域是每个进程都有的:程序计数器,虚拟机栈(线程栈),本地方法栈。(很多虚拟机会将虚拟机栈和本地方法栈合并为一个,本地方法栈是java用来调用非java所写的程序用的)。</p>
<p>一个java程序执行时,首先JVM进程(包含类加载器class loader和执行引擎)被创建,主线程执行static main,创建栈帧并压入虚拟机栈(虚拟机栈一个线程一个栈),执行到new object时,class loader将用到的类文件(class file)加载到方法区,在堆区创建一个对象,并将对象的引用赋给变量。</p>
ps:<ol>
<li>静态变量和静态代码块放在方法区内.</li>
<li>静态代码块执行是在类加载时,先于构造函数,但不一定是在程序最开始时加载,一般在第一次调用时且执行一次(第一次调用时才会加载该类,如果该类包含main方法,会在程序开始时直接加载,java是动态加载),所以如A a;这样的语句并不会执行静态代码,代码执行顺序:父类静态-子类静态-父类非静态-子类非静态。</li>

<li> Paste_Image.png
虚拟机对栈帧会优化,有一部分数据是重叠的。</li>
<li>这图很清楚
Paste_Image.png </li>

相关文章

  • JAVA创建类时的内存变化

    Java内存分五个区域,其中两个区域是线程公有的,分别是堆区和方法区(常量池在方法区,jdk1.7之后独立出来),...

  • class文件和字节码解析

    讲解了Java类和对象在内存中的表示机制,Java对象是根据Java类创建的,表示一个Java类实例;Java类是...

  • Java堆空间和堆栈!!!

    Java堆空间 Java运行时空间由Java运行时用于为Objects和JRE类分配内存。每当我们创建任何对象时,...

  • java对象的创建过程是什么

    java对象的创建过程是什么 java对象的创建过程: 类加载检查-->分配内存-->初始化零值-->设置对象头-...

  • JAVA

    JAVA java中接口与抽象类的区别? 简述jvm的内存布局? java对象创建的过程? java重载与重写的区...

  • java学习

    Java ByteArrayInputStream类 Java 流(Stream) 字节数组输入流在内存中创建一个...

  • 【问答】补充

    Java JVM如何管理内存的? Java中内存管理是JVM自动进行的,创建对象或者变量时JVM会自动分配内存,当...

  • 第8章 使用RecyclerView显示列表

    单例与数据集中存储 单例是特殊的Java类,在创建实例时,一个单例类仅允许创建一个实例。应用能在内存里活多久,单例...

  • 实例变量与类变量

    java内存管理分为两个方面:内存分配和内存回收,这里的内存分配是指创建java对象时jvm为该对像在堆内存中分配...

  • 通用对象池化框架Apache Commons Pool 2简析

    前言 我们知道,创建Java对象会涉及到对象初始化、内存分配、类加载等多个步骤。当对象比较重量级时,频繁创建对象会...

网友评论

      本文标题:JAVA创建类时的内存变化

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