这里要讲的是类型(Class)的生命周期而不是对象的生命周期,后续文章将描述GC的相关内容。
1. 类型的生命周期的开始
装载(Load)----->连接(Link)------>初始化(Initialize),而连接阶段分为三个子步骤----------验证(Verifiy)--->准备(Prepare)--->解析(Resolve)(可选的)。
见下图:
2. 卸载类型
首先:为何要卸载类型?
这个问题很简单,就像你的家里为什么要打扫一样,你们懂得!
因为每次加载一个Java类型,就要再方法区中开辟一块内存出来,存储与该类型相关的信息(可以参考
http://boy00fly.iteye.com/admin/blogs/1095263),方法区中的内存的占用会越来越多,所以如果不回收这些类型的话,你们懂的!
其次:何时要卸载?
其判断标准和与判断对象是否需要被回收的标准很类似。如果程序不再引用某类型,那么这个类型就可以卸载了。启动类装载器装载的类型永远是可触及的,所以永远不会内卸载。只有使用用户定义的类装载器装载的类型才会变成不可触及的。如果某个类型的Class实例被发现无法通过正常的垃圾收集堆触及,那么这个类型就是不可触及的。
最后:如何判断动态装载的类型的Class实例在正常的垃圾收集过程中是否可以触及?
第一种:最简单的,如果程序保持对Class实例的明确引用,他就是可触及的。
第二种:如果在堆中还存在一个可触及的对象,在方法区中他的类型数据指向一个Class实例,那么这个Class实例就是可触及的。
- 大小: 18.2 KB
分享到:
相关推荐
### Java中对象的生命周期 #### 一、对象的生命周期概览 在Java中,对象的生命周期是指从对象被创建到最终被垃圾回收器回收这段时间。理解对象的生命周期对于有效地管理和优化Java应用程序至关重要。 #### 二、...
Java 变量的生命周期与作用域 Java 变量的生命周期是指变量从定义到销毁的整个过程,而作用域是指变量可以被访问的范围。在 Java 中,变量的生命周期和作用域是密切相关的。 变量的生命周期可以分为三个阶段:定义...
Spring Bean的生命周期是Spring框架中的核心概念,它涵盖了Bean从创建到销毁的全过程。了解这一过程对于优化应用程序的性能和管理资源至关重要。在Spring中,Bean的生命周期主要分为以下几个阶段: 1. **初始化阶段...
Java类型生命周期是指从Java类加载到JVM,直至卸载的整个过程。这个过程包括了几个关键阶段:装载、连接、初始化、使用以及结束。下面我们将详细探讨这些阶段。 **装载阶段** 1. 类型读入:JVM通过类的完全限定名从...
Servlet的生命周期包括四个主要阶段:加载和实例化、初始化、服务以及销毁。在本实验中,我们将通过编写和配置Servlet类来理解这些阶段。 1. **加载和实例化**: 当Web应用程序被部署到服务器(如Tomcat)时,...
### Java中类的生命周期 #### 一、概述 在Java编程语言中,类的生命周期是从类被加载到Java虚拟机(JVM)中开始,经过一系列处理直至类被卸载的过程。这一过程中涉及的关键步骤包括类的加载、连接、初始化等。理解...
### SERVLET生命周期与JSP生命周期比较 #### 一、引言 在现代Web开发中,Servlet和JSP是两种非常重要的技术,它们都属于Java EE平台的一部分,主要用于构建动态Web应用程序。这两种技术各有特点,但又紧密相关,...
- **泛型支持**:Autodispose支持多种生命周期类型,如Android的LifecycleOwner,或自定义的生命周期实现。 **如何使用Autodispose:** 1. **添加依赖**:首先,在项目的build.gradle文件中添加Autodispose的依赖。...
### Servlet生命周期详解 #### 一、引言 在Java Web开发中,Servlet作为一种重要的技术,被广泛应用于构建动态网页和处理客户端请求。了解Servlet的生命周期对于深入理解和掌握Servlet的工作机制至关重要。本文将...
### Servlet 生命周期演示代码详解 #### 一、Servlet 生命周期概述 在深入分析代码之前,我们先来了解一下 Servlet 的生命周期。Servlet 的生命周期主要包括三个阶段:初始化 (`init` 方法)、请求处理 (`service` ...
- 引用数据类型的实例存储在堆内存中,生命周期由程序员控制,通过new关键字创建,使用完毕后需要手动或者垃圾回收机制进行回收。 4. 数据类型的转换 - 自动类型转换(Widening Conversion):基本数据类型之间的...
理解Activity的生命周期和Intent的传值机制对于Android开发者来说至关重要。 Activity的生命周期分为三个主要阶段:启动(Start)、运行(Running)和销毁(Destroy)。在启动过程中,Activity会经历onCreate()、...
本篇将深入探讨Activity和Service的生命周期以及如何利用Android Interface Definition Language (AIDL)进行进程间通信。 Activity是Android应用程序的用户界面,它负责与用户交互。Activity的生命周期分为几个关键...
总的来说,Servlet是Java Web开发中的基础,理解和掌握Servlet的生命周期对于开发高效、可靠的Web应用至关重要。结合源码分析和适当的工具,如调试器和日志记录,可以更好地理解和优化Servlet的性能。在实际项目中,...
本文将深入探讨Tomcat的生命周期管理和事件管理,这两个概念是理解和优化Tomcat应用程序性能的关键。 首先,让我们关注Tomcat的生命周期。每个在Tomcat中部署的应用程序都有一个特定的生命周期,它由一系列的阶段...
该项目是面向泛前端产品研发全生命周期的DoraemonKit效率平台设计源码,包含3459个文件,涉及多种编程语言和文件类型,包括697个Java源文件、626个PNG图片文件、399个H文件、382个M文件、364个Kotlin文件、329个XML...
Servlet生命周期和模板设计模式是Java Web开发中的两个关键概念,它们在构建动态Web应用程序时起着至关重要的作用。 首先,让我们深入理解Servlet的生命周期。Servlet是Java编程语言中的一种接口,用于扩展服务器的...