`
san_yun
  • 浏览: 2666474 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

对象的生命周期

    博客分类:
  • java
阅读更多

先来看一段代码:

java 代码
  1. package com.talent.business;   
  2.   
  3. public class ScheduleManager  {   
  4.   
  5.   
  6.     ScheduleManager() {   
  7.         System.out.println("DefaultScheduleManager init");   
  8.     }   
  9.   
  10.   
  11. }   
java 代码
  1. package com.talent.business;   
  2.   
  3. public class ScheduleManagerFactory {   
  4.     private  ScheduleManager dsm = new ScheduleManager();   
  5.   
  6.     private static ScheduleManagerFactory factory = new ScheduleManagerFactory();   
  7.        
  8.     public ScheduleManagerFactory() {   
  9.         System.out.println("ScheduleManagerFactory init");   
  10.     }   
  11.   
  12.     public static ScheduleManager newInstance() {   
  13.         return factory.dsm;   
  14.     }   
  15.        
  16.     public static void main(String[] args) {   
  17.         ScheduleManagerFactory.newInstance();   
  18.         ScheduleManagerFactory.newInstance();   
  19.   
  20.     }   
  21.   
  22. }   
  23.   
  24.   

如果你能准确的说出运行结果,那么你就没有必要看这篇文章了,如果不能,我们来一起好好研究对象的生命周期.

运行的结果:

                 DefaultScheduleManager init

                 ScheduleManagerFactory init

我们来看这两句结果是如何产生的,当我们在main方法里面调用ScheduleManagerFactory .newInstatnce()的时候,JVM 会先装载ScheduleManagerFactory .clas,这个时候实际上叫做类加载过程。

实际在当我们每次用new语句产生一个类的实例的时候,JVM都会先对这个对象所属的类型进行加载,JLS(JAVA语言规范)用Class这个类型表示一个对象所属的类型,比如

java 代码
  1. System.out.println(String.class.getName());  

 这条语句的输出结果将是:java.lang.String;

JVM会进行类加载的时候首先会解析这个类(Class)的字节码时候是安全的,然后会对Class的static成员变量进行初始化。

导致JVM进行类加载有一下这几种情况

1.访问类的静态成员变量或静态成员方法.

2.调用new语句产生类的实例.

3.访问类的子类的静态成员或者实例化子类也会对父类进行加载

 

分享到:
评论

相关推荐

    2024年南开金融保研夏令营及推免笔面试经验干货研究报告(含金融院与金发展院)-最新出炉.zip

    1、资源特点 全新整理:今年全新力作,手工精心打磨。 权威数据:数据来自权威渠道,精准可靠。 放心引用:杜绝数据造假,品质保证。 2、适用人群 在校专科生、本科生、研究生、大学教师、学术科研工作者 3、适用专业 经济学、地理学、城市规划、公共政策、社会学、商业管理、工商管理等

    经典塔防游戏开发-基于Cocos2dX3.X(还原《KingdomRush》,含源码+项目说明).zip

    1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等,可直接用于毕设、课设、作业、比赛、学习 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用! 提供项目开发过程中所有资料、很优质得项目。

    《基于 CNN 的电力负荷预测》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持"

    springboot项目停车场管理系统.zip

    springboot项目停车场管理系统,含有完整的源码和报告文档

    《利用 YOLOv9 和 DeepSORT 进行对象跟踪,并结合画线功能可视化被跟踪对象路径》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

    幼儿早教管理系统是一种以信息技术为基础,为幼儿早教提供全面管理和服务的软件系统

    通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。 适合人群:具备一定编程基础,工作1-3年的研发人员 能学到什么:①工厂模式、策略模式、观察者模式等都是怎么在Spring中体现的;②IOC、AOP、代理、切面、循环依赖都是如何设计和实现的。 阅读建议:此资源以开发简化版Spring学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码

    俄罗斯方块-C语言实现

    俄罗斯方块(Tetris)是一款经典的电子游戏,由苏联程序员阿列克谢·帕基特诺夫于1984年开发。游戏的目标是通过旋转和移动不同形状的方块,使它们在游戏区域内形成完整的横行,这样这些行就会消失,玩家得分。随着游戏的进行,方块下落的速度会逐渐加快,游戏难度也会相应增加。 俄罗斯方块因其简单易学但难以精通的游戏机制而广受欢迎,成为了全球性的文化现象。它不仅是最畅销的电子游戏之一,还对电子游戏行业和现代流行文化产生了深远的影响。此外,俄罗斯方块也被认为有助于提高玩家的空间认知能力和反应速度。

    《基于 pygame 的飞机战争游戏》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

    《基于区块链的身份识别和访问控制生态系统设计》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

    《基于Pygame的五子棋游戏》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    《基于Pygame的五子棋游戏》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计

    springboot项目大学生兼职跟踪系统.zip

    springboot项目大学生兼职跟踪系统,含有完整的源码和报告文档

    基于Python宫颈癌风险智能诊断系统-天池数字人体视觉挑战赛参赛作品(含源码+项目说明).zip

    基于Python宫颈癌风险智能诊断系统-天池数字人体视觉挑战赛参赛作品(含源码+项目说明).zip 【资源说明】 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!

    《基于pygame的鸡蛋乒乓球游戏》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    《基于pygame的鸡蛋乒乓球游戏》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计

    《基于以太坊区块链的简单赌场游戏》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

    《基于 Pygame 的AI星星游戏》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

    基于Java语音识别的老年人防诈骗系统(Android+Flash+语音识别API).zip

    基于Java语音识别的老年人防诈骗系统(Android+Flash+语音识别API).zip 【资源说明】 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!

    京东IDL猪脸识别项目-参赛作品(含源码+项目说明+设计报告).zip

    1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等,可直接用于毕设、课设、作业、比赛、学习 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用! 提供项目开发过程中所有资料、很优质得项目。

    (1914-2024.3)全球各国汇率、短长期、政策利率数据【重磅,更新!!!】

    ## 数据指标说明 根据国际货币基金组织(IMF)等平台的数据,整理了全球各国的兑美元汇率,短期利率、长期利率、政策利率数据,时间范围最新至2024年3月,希望对大家有所帮助 ## 一、数据介绍 数据名称:全球各国汇率、短长期、政策利率数据 数据范围:全球国家 样本数量:76403条 数据年份:1914-2024.3 数据说明:包含兑美元汇率、短期利率、长期利率、政策利率 更新时间:2024年3月 ## 二、指标范围

    贪吃蛇JAVA设计报告.doc

    贪吃蛇JAVA设计报告.doc

    《基于区块链的假冒产品检测系统》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

Global site tag (gtag.js) - Google Analytics