首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java类的生命周期浅析

类的生命周期?对象的生命周期?Spring bean 的生命周期?很多同学可能在学习java基础知识之初,很容易把这几个搞混。本文先来说说Java类的生命周期。...那简单来说,java类被jvm进行加载到卸载的过程,就是java类的一生,我们称之为java类的生命的周期。...如下图所示: 也可能会存在加载或连接之后就直接别使用的情况,这里后续讨论 也可以说:Java类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification...:找到需要加载的类并把类的信息加载到jvm的方法区中,然后在堆区中实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。...如果以上三个条件全部满足,jvm就会在方法区垃圾回收的时候对类进行卸载,类的卸载过程其实就是在方法区中清空类信息,java类的整个生命周期就结束了。

45800

详解Java类的生命周期

首先来了解一下jvm(java虚拟机)中的几个比较重要的内存区域,这几个区域在java类的生命周期中扮演着比较重要的角色: 方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域...类的生命周期 当我们编写一个java的源文件后,经过编译会生成一个后缀名为class的文件,这种文件叫做字节码文件,只有这种字节码文件才能够在java虚拟机中运行,java类的生命周期就是指一个class...加载 在java中,我们经常会接触到一个词——类加载,它和这里的加载并不是一回事,通常我们说类加载指的是类的生命周期中加载、连接、初始化三个阶段。在加载阶段,java虚拟机会做什么工作呢?...如果以上三个条件全部满足,jvm就会在方法区垃圾回收的时候对类进行卸载,类的卸载过程其实就是在方法区中清空类信息,java类的整个生命周期就结束了。...总结 做java的朋友对于对象的生命周期可能都比较熟悉,对象基本上都是在jvm的堆区中创建,在创建对象之前,会触发类加载(加载、连接、初始化),当类初始化完成后,根据类信息在堆区中实例化类对象,初始化非静态变量

36720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java类的生命周期详解

    首先来了解一下jvm(java虚拟机)中的几个比较重要的内存区域,这几个区域在java类的生命周期中扮演着比较重要的角色: 方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域...除了以上四个内存区域之外,jvm中的运行时内存区域还包括本地方法栈和程序计数器,这两个区域与java类的生命周期关系不是很大,在这里就不说了,感兴趣的朋友可以自己百度一下。...类的生命周期 当我们编写一个java的源文件后,经过编译会生成一个后缀名为class的文件,这种文件叫做字节码文件,只有这种字节码文件才能够在java虚拟机中运行,java类的生命周期就是指一个class...如果以上三个条件全部满足,jvm就会在方法区垃圾回收的时候对类进行卸载,类的卸载过程其实就是在方法区中清空类信息,java类的整个生命周期就结束了。...总结 做java的朋友对于对象的生命周期可能都比较熟悉,对象基本上都是在jvm的堆区中创建,在创建对象之前,会触发类加载(加载、连接、初始化), 当类初始化完成后,根据类信息在堆区中实例化类对象,初始化非静态变量

    68730

    Android Studio中 .gitignore配置

    .gitignore 使用 我们第一次创建项目和上传项目的时候,是没有.gitignore文件的,我们需要自己配置,这里讲的是Android Studio中怎么使用.gitignore,关于第一次如何上传项目到...从以上提交的结果可以看出,没有添加 Android 工程应有的 .gitignore 文件,我们可以去https://github.com/github/gitignore下载一个,也可以拷贝之前的项目的...从上图中我们可以看到 .java 文件编译产生的 .class 文件依然被 track。...对于以上情况,我们需要用到强制提交的命令: git add -f *.class 我们修改一下 .java 文件然后保存,看看产生的编译文件 .class 是否再次被 track,答案是肯定的!...说明:Git 代码管理中,我们在没有添加 .gitignore 文件的前提下提交了代码之后再提交 .gitignore 文件,或者是中途添加某一文件类型到 .gitignore 文件中,需要通过以下命令行的方式

    3.9K60

    Android中Activity生命周期

    2020/4/6编辑 由 安卓巴士 启发 OnCreate 表示Activity正在被创建,这是生命周期的第一个方法。...在这个方法中,我们可以做一些初始化工作,比如调用setContentView去加载布局文件,初始化Activity所需的数据。 onRestart 表示Activity正在重启。...onDestory 表示Activity即将被销毁,这时Activity生命周期中的最后一个回调,在这里,我们可以做一些回收工作和最终的资源释放。...总结 从整个生命周期来说,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用。...从Activity是否可见来说,onStart和onStop是配对的,随着用户的操作或者设备屏幕的点亮,这两个方法会被调用多次;从Activity是否前台来说,onResume和onPause是配对的,

    10110

    Android中各组件的生命周期

    onDestroy():当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate()方法中创建的资源,如结束线程等。...4、android三个嵌套循环 (1)Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束。...5、BroadcastReceiver广播接收器生命周期 生命周期只有十秒左右,如果在onReceive()内做超过十秒内的事情,就会报ANR(Application No Response)程序无响应的错误信息...它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束。...6、Service服务生命周期 Service完整的生命周期从调用onCreate()开始直到调用onDestroy()结束。

    856100

    Android Studio 4.1 中的本地内存分析

    本文是 Android Studio 4.1 中 Profiler 有哪些新增特性 的第二部分。之前的文章侧重于介绍 Android Studio 中 System Trace 的新增功能。...在 Android Studio 4.1 中,Memory Profiler (内存分析器) 可以记录本地内存分配的调用栈。...您只需要在 Android Studio 中点击 profile 按钮,然后打开内存分析器,里面会显示更加详细的内存追踪信息。 ?...本地内存记录在 Android Studio 中加载时的初始状态 有些游戏或者应用所依赖的库会在 new 关键字之外调用 malloc 来申请内存。...另一个本地内存追踪的常见用法是理解应用启动时内存的占用情况。在 Android Studio 4.1 中,我们还增加了在应用启动时采集本地内存使用记录的功能。

    2.8K30

    Android Studio 4.1 中 Design Tools 的改进

    Android Studio 中的 Design Tools Suite 提供了一整套开发工具包,使得开发者们能高效地进行 UI 设计、原型设计、构建和调试代码。...在 Android Studio 4.1 的迭代中,我们将重心侧重于听取并处理来自用户的反馈,并以此作为依据对现有工具进行改善,最终我们不仅重新设计了现有的一些交互方式,还新增了一些遗漏的功能。...在 Android Studio 4.1 中,我们希望能够在 IDE 中很好地支持这些 helper 的功能,从而达到更好的交互体验。...通过新的属性面板选项操作 helper 设计时 (Design-time) 的属性开关 Android Studio 提供了各种 工具属性,它们都是 android:tools 命名空间下的 XML 属性...我们之前收到了很多关于 Material.io 中的 Material 图标同 Vector Asset wizard 中的图标不一致的抱怨,引起不一致的主要原因是 Android Studio 的发布节奏和

    2.2K30

    Android Studio 中 System Trace 的新增功能

    在 Android Studio 4.0 中,我们已经对 CPU Profiler 的 UI 做了大量调整来提供更加直观的工作流记录,而在 Android Studio 4.1 中,我们基于开发者们的反馈对此功能进行了持续改进...我们将会在本文重点介绍 Android Studio 中 System Trace 的新增功能,System Trace 也就是 "系统跟踪" 的意思,用来记录短时间内的设备活动,它会生成一个 .trace...不同于函数跟踪,如 Java Method 或 C/C++ Func Trace,System Trace 跟踪的是系统级的内容,如设备活动 (例如 CPU 核心调度) 和 Android 系统进程 (...Android Studio 4.1 Beta 1 中的 System Trace 界面 您可以通过简单拖拽将某一区域或者区域内的某个元素进行向上或向下移动来重新组织列表。...框选、拖放与缩放 分析面板 说到分析,我们想着重聊一聊 Android Studio 4.0 中引入的新  Analysis Panel ,它位于  Profiler 窗口的右边一列。

    2.7K50

    Android Studio 中的 Motion Editor 用法详解

    自 Android Studio 4.0 版本开始,我们发布了稳定版本的 Motion Editor,许多开发者已经在使用它创建动画效果。 ?...Motion Editor 中运行的动画 Motion Editor 是 Android Studio Layout Editor (布局编辑器) 的一个扩展,当您在一个包含 MotionLayout...您可以使用已在布局编辑器中所熟知的交互方式来编辑布局和 Motion Scene 文件,并可以直接在 Android Studio 预览界面中对动画效果进行预览。...我们希望这些功能能够让编译器更容易解析复杂的过渡效果,并简化创建体验。 ? Motion Editor 已在 Android Studio 4.0 中推出,欢迎大家使用并给予我们反馈。...Android Studio 团队也会不断地收集反馈以改善其使用体验。有任何想法或遇到任何问题,欢迎 提交反馈。

    2.2K10

    Android Studio软件技术基础 —Android项目描述---1-类的概念-android studio 组件属性-+标志-Android Studio 连接真机不识别其他途径

    最近有点忙碌,对于我来说,学习Android开发,是对于我的考验,最近一位大佬发给我一道题目,我既然无力解决,所以我也要加把劲了。 学习android的同学,一定要对java有所了解,再来学习。...所以说类是从一些具有相同属性或功能的具体实例,抽象出共有的一些属性的,自定义抽象数据类型。(明白?不明白?) 重点 类,那么就让我们想象一下,把类想象成我们拿的手机,如果用java来描述,你会吗?...在你们学习的java中,应该是 public class Mobile{ private Button mCallButton; private String mPhoneNumber; protected...从布局XML到视图对象 想知道XML元素是如何转换为视图对象的吗?答案就在于你定义的类中哦。 类中Activity子类的实例创建后,onCreate(Bundle)方法将会被调用。...Android Studio 连接真机不识别其他途径 连不上的原因有以下几种: 1. 手机设置问题。 2. 数据线问题。 3. 是否下载了对应手机版本的SDK。

    76820

    java中的类

    在java中用来描述具有共同性质的一组事物的自定义的复合数据类型—类。 复合数据类型的本质—【根据自己的需求制作自己需要的数据类型的模式/规则/公式】 4.2.如何编写一个Java类?...{ } 4.3.Java类中可以编写什么?...基本属性——变量 基本功能—–方法 变量–是用来在类中描述事物的基本属性 方法–是用来在类中描述事物的基本功能 4.4.Java类中变量的分类及其基本特征?...变量—保存数据 1.数据类型【不一定就是之前的基本数据类型,也有可能是自定义的复合数据类型】 2.变量名称【合法标识符–全字母小写】 3.初始值 4.作用域 按照在类中编写变量的位置划分...在同一个类中成员变量与某一个方法中的局部变量的名称相同,这是我们在方法中使用这个成员变量的时候,得到的结果是局部变量的值,此时就是方法中的局部变量将类中成员变量的值隐藏了,这就是成员变量的隐藏。

    1.3K30

    浅谈一个Java类的生命周期

    这篇文章就来简述一下关于Java类生命周期相关的知识,其中每个生命周期的具体内容不会细讲,因为内容太多,我准备专门花一篇文章介绍类生命周期中的详细步骤,期待下一篇文章吧~ 概述 一个Java类从开始到结束整个生命周期会经历...这里我所说的Java类是已经编译好的类,也就是说它已经是class字节码了,如果要从.java文件算起的话应该还有个编译过程。...初始化:在该阶段,才真正意义上的开始执行类中定义的java程序代码,该阶段会执行类构造器,并且在Java虚拟机规范中有明确的规定,在下面5种情况下必须对类进行初始化: 遇到new、getstatic、putstatic...卸载:从内存中释放,在我之前写的垃圾回收机制(GC)总结一文中有介绍到方法区内存回收中对类的回收条件,这里再贴出来一下: 该类所有的实例都已经被回收,也就是Java堆中不存在该类的任何实例; 加载该类的...而No.3情况获取value值是bipush 123,这个123是直接从常量池中取的,无需从FatherClass类中获取。 参考文献:《深入理解Java虚拟机》 END

    1.4K40

    Android中 Bundle类的作用

    Android中 Bundle类的作用Bundle类用作携带数据,它类似于Map,用于存放 key-value名值对形式的值。...Bundle的内部实际上是使用了 HashMap类型的变量来存放putxx( )方法放入的值 在调用 Bundle对象的 getXxx( )方法时,方法内部会从该变量中获取数据,然后对数据进行类型转换...,转换成什么类型由方法的Xxx决定, getXxx( )方法会把转换后的值返回 第一个参数是你开启请求nten时的对应请求码,可以自己定义第二个参数是目标 Activity返回的验证结果码第三个参数是目标...Activity返回的 Intent目标 Activity中发送请求结果代码,连同源 Activity请求的数据同绑定到 Bundle中通过 intent传回源请求 Activity中 目标...Activity中发送请求结果代码,连同源Actⅳy请求的数据同绑定到 Bundle中通过 Intent传回源请求 Activity中

    52120

    类的生命周期

    一个类从被加载到虚拟机内存开始,到卸载出内存为止,这个生命周期经历了七个阶段:加载、验证、准备、解析、初始化、使用、卸载。 加载阶段: 通过一个类的全限定名来获取定义此类的二进制字节流。...将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。...在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口 验证: 验证的目的是确保Class文件的字节流中包含的信息满足约束要求,保证这些代码运行时不会危害虚拟机自身安全...准备 准备阶段是正式为类中定义的变量(静态变量)分配内存并设置类变量初始值的阶段。 解析 解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。...初始化 到了初始化阶段,才真正开始执行类中定义的Java字节码。

    28530
    领券