`

Java虚拟机(JVM)对象创建浅析

阅读更多
你认为java虚拟机什么时候会创建一个对象?如果能回答出下面的问题,你就可以不用继续向下看了。
  
  class A{
  static final int a = 10;
  
  static{
  System.out.println( "initializing A" );
  }
  
  }
  
  class B{
  public static void main(String[] args){
  System.out.println(A.a);
  }
  
  static{
  System.out.println( "initializing B" );
  }
  }
  
  我们调用B的main函数,会得到什么输出?
  
  经过考虑后,你是不是认为应该得到:
  
  "initializing B"
  "initializing A"
  10
  
  这个结果?不对,其实结果是:
  
  "initializing B"
  10
  
  嗯?A没有被实例化?
  
  其实,java虚拟机会在6种情况下创建一个对象,分别是:
  
  ·创建类的新实例
  
  ·调用类中声明的静态方法
  
  ·操作类或接口中声明的非常量静态字段
  
  ·调用Java API中特定的反射方法
  
  ·初始化一个类的子类
  
  ·制定一个类作为Java虚拟机启动时的初始化类
  
  java虚拟机只有在第一次主动使用一个类的情况下才会初始化该类。在以上6种情况下,虚拟机认为正在主动使用该类,所以会对其进行初始化,记住这6条,SCJP可能会出现(只是如果,可能考试不会涉及到虚拟机一层)
  
  顺便说一下,任何一个类的初始化都要求它的所有祖先类(非祖先接口)预先被初始化,而接口的初始化则不需要祖先接口预先被初始化。
分享到:
评论

相关推荐

    浅析Java语言中对象的创建过程.zip

    1. **加载与链接**:Java虚拟机(JVM)首先检查类是否已经被加载和链接。如果未加载,JVM会通过类加载器找到对应的`.class`文件,进行加载和链接。加载包括找到类的二进制数据,而链接则包括验证、准备和解析三个...

    浅析Java语言中对象的创建过程.pdf

    JVM(Java虚拟机)为每一个运行中的Java应用程序提供了一个唯一的运行环境。JVM的内存主要被划分为三个区域:堆区、栈区和方法区。堆区(Heap)是存放通过new关键字创建的对象实体的地方,这些对象实体在堆中拥有...

    Java内存分配浅析

    Java程序在JVM(Java Virtual Machine,Java虚拟机)上运行,JVM作为一个平台无关的执行环境,负责Java程序的内存管理和执行。理解Java内存分配原理有助于优化程序性能,避免内存泄露等问题。 在JVM中,内存主要...

    浅析JVM

    **JVM(Java虚拟机)**是Java平台的核心组件之一,它为Java程序提供了执行环境,确保了程序可以在不同硬件和操作系统上运行而无需修改代码。 - **关键作用**: - **跨平台性**:通过将Java源代码编译为中间代码...

    基于Java的Web开发技术浅析.pdf

    Java的跨平台特性主要得益于其运行于Java虚拟机(JVM)上的机制,这一机制确保了Java代码能够在不同的操作系统上无差别地运行,从而实现了代码的“一次编写,到处运行”。Java的主要应用方向包括嵌入式系统开发、...

    技术浅析.pdf 知识领域 Javase javaee Java技术浅析 技术关键词 JAVA语言 编程技术框架 原理

    Java虚拟机(JVM)是Java语言的运行平台。JVM可以管理异常的生命周期,提供了强大的功能和灵活的特性。 六、高并发问题 高并发问题是指在高并发情况下系统出现的问题。解决高并发问题可以使用分布式流量分发、同步...

    Java中堆内存与栈内存分配浅析

    堆内存是Java虚拟机(JVM)用于存储所有对象实例的地方。当一个对象被创建时,其数据将被分配到堆内存中。堆内存的特点是动态分配,即对象的大小在创建时不确定,且对象的生命周期也较难预测。由于这些特性,堆内存的...

    Java类加载原理浅析

    Java类加载原理是Java虚拟机(JVM)的重要组成部分,它负责将类的.class文件从磁盘或网络中加载到内存,并转化为运行时的数据结构,以便执行程序代码。本文将深入探讨类加载机制,包括加载、连接、初始化三个主要...

    Java程序与C语言的区分浅析_.docx

    在可移植性上,Java的“一次编写,到处运行”(Write Once, Run Anywhere, WORA)特性使得Java程序可以在任何支持Java虚拟机(JVM)的平台上运行,而无需重新编译。相比之下,C语言程序需要针对目标平台进行编译,...

    浅析JAVA异常处理机制.pdf

    - Java虚拟机(JVM)会终止当前线程中已经开始但尚未结束的表达式、语句、方法调用等,直到找到一个能够处理该异常的异常处理句柄。 - 如果没有找到合适的处理句柄,则会调用当前线程的父线程`ThreadGroup`的`...

    浅析dalvik虚拟机JIT技术的实现.doc

    Dalvik虚拟机是专为Android设计的虚拟机,不同于传统的Java虚拟机(JVM),它采用寄存器架构而非栈架构,旨在减少内存占用,适应移动设备的硬件限制。在Android 2.2版本中,Dalvik虚拟机引入了JIT技术,这一技术通过...

    浅析JAVA之垃圾回收机制.doc

    Java虚拟机(JVM)负责执行垃圾回收,但其工作原理对于优化程序性能至关重要。 1、`finalize()`方法: `finalize()`方法是Java中的一个特殊方法,由`Object`类定义,但并不直接与垃圾回收有关。当对象不再被引用时...

    Java中main()方法浅析.docx

    当Java虚拟机(JVM)启动并加载了一个包含`main()`方法的类时,它会自动调用这个方法来开始程序的执行流程。接下来,我们将详细探讨`main()`方法的各种特性和注意事项。 #### 二、main()方法的基本定义 `main()`方法...

    浅析计算机软件JAVA编程的特点及应用.zip

    Java采用了“一次编写,到处运行”(Write Once, Run Anywhere, WORA)的理念,这得益于Java虚拟机(JVM)。开发者可以在任何安装了JVM的操作系统上运行Java程序,无论是Windows、Linux还是Mac OS,大大提高了软件的...

    Java内存分配全面浅析

    进入正题前首先要知道的是Java程序运行在JVM(JavaVirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的...

    浅析计算机软件JAVA编程的特点及应用.pdf

    Java源代码被编译成中间码,这种中间码再由Java虚拟机(JVM)解释执行,JVM可以根据不同平台的具体实现进行调整,从而实现平台无关性。 安全性同样是Java语言非常重视的特点,尤其是在网络环境中。Java提供了丰富的...

    浅析JVM逃逸的原理及分析

    按照 JVM 调优机制,首先会在堆内存创建类的实例,然后将此对象的引用压入调用栈,继续执行。这是 JVM 优化前的方式。 通过逃逸分析,JVM 能够对栈的重新分配方式进行优化,首先找出未逃逸的变量,将该变量直接存到...

    浅析Java Applet技术在网络管理中的研究及应用.zip

    由于Java的“一次编写,到处运行”(Write Once, Run Anywhere)理念,Applet可以在任何支持Java虚拟机(JVM)的设备上运行,无论操作系统是Windows、Mac还是Linux。这在早期网络环境中,极大地促进了不同系统间的...

Global site tag (gtag.js) - Google Analytics