`
臻是二哥
  • 浏览: 183454 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Java技术分享
浏览量:0
社区版块
存档分类
最新评论

JVM-对象的生命周期

    博客分类:
  • JVM
阅读更多
当一个类型经历了装载,连接,初始化之后,就可以为这个类变量实例化一个对象了。在java中,一个类可以被显式或者隐式的实例化。
显式实例化有四种方法:
1 使用new操作符
2 调用java.lang.reflect.Constructor的newInstance方法
3 调用现有对象的clone方法
4 通过java.io.ObjectInputStream的readObject方法反序列化

隐式实例化就是指在代码中看不见以上四种关键字,但仍会在堆空间中实例化对象,比如public static void main(String [] args)方法中的参数,当有参数传入的时候,就需要实例化String对象,这就是隐式实例化;再比如System.out.println("str"+"str1");语句会实例化出一个StringBuffer对象和一个String对象,StringBuffer对象用于连接两个常量,String用于存储StringBuffer.toString()的结果。这些都是隐式的创建类对象。

不管是显式的还是隐式的,当实例化一个类对象的时候,JVM会在堆空间中为对象变量分配内存,包括他的父类中的对象变量。同时为这些对象变量赋默认值(这和类的连接阶段的准备过程很像)(如果变量在声明的时候有默认值那就赋代码中的默认值)。当为对象变量分配内存并赋默认值之后,就开始为变量赋正确的值了(这和类的初始化阶段很想)。对于使用clone方法产生的对象,直接从被克隆的对象中复制值。对于使用readObject产生的对象,直接从输入流中读取值。对于使用new产生的对象,调用类的构造方法,类的构造方法在类的class文件中叫<init>方法。编译器在编译生成class文件的时候会保证每个类至少有一个<init>方法,这与类<clinit>方法略有不同。<clinit>方法是否存在主要取决于类中是否有类对象初始化语句和静态初始化语句。<init>方法负责为类的实例对象赋正确的值。关于<init>方法,使用过构造函数的都应该知道,在此不再赘述。

当一个类实例化产生对象之后,就可以使用这个对象了。当这个对象不再被使用的时候吗,就需要对象的垃圾回收机制了。关于垃圾回收,以后的博文中介绍。




1
5
分享到:
评论

相关推荐

    JVM中对象的生命周期

    关于JVM中对象的生命周期的讲解,不错!!

    Java对象在JVM中的生命周期详解

    主要介绍了Java对象在JVM中的生命周期详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Hibernate持久化对象的生命周期

    Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化...Java对象在JVM中的生命周期 理解Session的缓存 在Hibernate应用中Java对象的状态 Session的保存、更新、删除、查询方法:

    Java 详解垃圾回收与对象生命周期

    主要介绍了Java 详解垃圾回收与对象生命周期的相关资料,这里对堆内存与栈内存进行详解及JVM 的生命周期介绍,需要的朋友可以参考下

    最新java面试专题01-JVM

    JVM生命周期:JVM的生命周期始于启动一个Java程序,此时会创建一个JVM实例。程序中的public static void main(String[] args)方法作为JVM实例运行的起点。 垃圾收集:JVM具有自动内存管理和垃圾收集机制,用于自动...

    Java虚拟机JVM类加载初始化

    由Java虚拟机自带的默认加载器(根加载器、扩展加载器、系统加载器)所加载的类在JVM生命周期中始终不被卸载。所以这些类的Class对象(我称其为实例的模板对象)始终能被触及!而由用户自定义的类加载器所加载的类会...

    Java中类与对象的生命周期

    类的生命周期  .java源文件经过编译后会生成相应的字节码文件(.class)。jvm通过解释器翻译字节码文件并在系统中执行。  而java类的生命周期是其字节码文件装载、连接、初始化、使用、和卸载的整个过程。 ...

    详解java类的生命周期

    本文详细讲述了一个java类自调入内存至被卸载的整个声明周期,对理解对象的生命周期,jvm中的类加载等内容有所帮助。

    java序列化

    Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM(Java Virtual Machine(Java虚拟机))处于运行时,这些对象才可能存在(即,这些对象的生命周期不会比JVM的生命周期更长)。但在现实应用...

    Android中的内存泄漏

    长生命周期的对象持有了短生命周期的对象,从而导致短生命周期的对象不能被释放 垃圾回收机制 垃圾回收机制分为:引用计数法、可达性分析法 引用计数法(有循环引用的问题):Python、Object-C、Swift 用一个计数器...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    线程的创建方式与生命周期 线程核心机制,基础概念扩展 多线程并发访问,同步控制 线程间通信,等待/通知机制 锁锁机制,API详解 Fork/Join 框架机制详解 Executor线程池框架简介 面向对象 泛型机制与反射原理 ...

    Android静态变量的生命周期 简单介绍

    不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用,则与内存回收、内存泄漏这些问题有关,有必要加深研究和理解。 一、静态变量在类被...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.1 Java对象在JVM中的生命周期  8.2 理解Session的缓存  8.2.1 Session的缓存的作用  8.2.2 脏检查及清理缓存的机制  8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的...

    java虚拟机(jvm)介绍以及相关参数设置与调优

    虚拟机的相关参数设置与调优,介绍了一些jvm的体系结构,垃圾回收的方法,java对象的生命周期与分代。

    关于JVM的总结

    类的生命周期: 加载-&gt;(验证-&gt;准备-&gt;解析)(连接)-&gt;初始化-&gt;使用-&gt;卸载 类被加载到虚拟机内存开始,到卸载出内存为止,生命周期包含: 加载,验证,准备,解析,初始化,使用,卸载 7个阶段,加载,验证,准备,初始...

    精通Hibernate:对象持久化技术第二版part3

    本章站在持久化层的角度,Java对象在生命周期中可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 ...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章站在持久化层的角度,Java对象在生命周期中可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 ...

    data:Java架构师核心资料持续更新中,需要内推大厂的同学请加微kepeihong

    Spring-Bean生命周期 SpringAOP实现原理 Spring面试题 springBoot面试题 springMVC面试题 springCould面试题 JVM JVM执行子系统 JVM面试题 JVM性能优化面试题 虚拟机类加载机制 Java 虚拟机 JVM内存整理及GC回收面试...

    [深入理解Java.7.核心技术与最佳实践]

    第二部分是7-13章,对JVM、Java源代码和字节代码操作、类加载器、对象生命周期、多线程、并发编程、泛型、安全等Java平台的核心技术进行了深入解析,掌握这部分内容有助于深入理解Java的底层原理;第三部分为第14章...

    深入理解java7

    第二部分是7-13章,对JVM、Java源代码和字节代码操作、类加载器、对象生命周期、多线程、并发编程、泛型、安全等Java平台的核心技术进行了深入解析,掌握这部分内容有助于深入理解Java的底层原理;第三部分为第14章...

Global site tag (gtag.js) - Google Analytics