`
boy00fly
  • 浏览: 195214 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java类型的生命周期简介

    博客分类:
  • JVM
阅读更多

这里要讲的是类型(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
1
2
分享到:
评论

相关推荐

    java类型生命周期的详细解析

    以下是对java中的类型生命周期进行了详细的分析介绍,需要的朋友可以过来参考下

    java常用面试题及答案

    spring bean 容器的生命周期是什么样的? Spring中有哪些类型的通知(Advice)? Spring Boot 的核心配置文件有哪几个?它们的区别是什么? springboot集成mybatis的过程 springcloud如何实现服务的注册和发现

    Java支持库2.0#0版

    由“Java虚拟机”负责真实Java虚拟机的生命周期管理,而“Java本地接口”则提供Java类库的访问接口。使用时,可直接通过“Java本地接口”的各类方法访问Java类库(即与“Java虚拟机”通信),由支持库本身自动完成...

    Java支持库2.0#0版(静态版)

    由“Java虚拟机”负责真实Java虚拟机的生命周期管理,而“Java本地接口”则提供Java类库的访问接口。使用时,可直接通过“Java本地接口”的各类方法访问Java类库(即与“Java虚拟机”通信),由支持库本身自动完成...

    Java面试总复习.xmind

    包括java数据类型 javaoop 集合 Map 线程生命周期 线程安全 线程生命周期, Spring core作用域Spring 常用注解 基础面试题

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

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

    深入JAVA虚拟机第二版.pdf 目录

    第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally...

    javajvm虚拟机原理PPT课件.pptx

    每次启动一个Java程序,都会创建一个Java虚拟机实例,该实例将管理Java程序的生命周期。Java虚拟机实例的生命周期结束时,该程序也将退出。 Java虚拟机体系结构 Java虚拟机的体系结构主要由四个部分组成:子系统、...

    Java基础知识点总结.docx

    线程的生命周期 44 线程管理 45 线程同步 49 线程通信 52 线程池 58 死锁 64 线程相关类 65 十三、 同步★★★★★ 67 十四、 Lock接口 70 十五、 API 71 < java.lang >String字符串:★★★☆ 71 < java.lang >...

    Java后端面试问题整理.docx

    • 熟悉Java多线程并发中线程基本方法,线程池,线程生命周期,熟悉Java锁中常见锁分类(乐观/悲观锁、自旋锁、独/共享锁、可重入锁、公平/非公平锁、分段锁、偏向锁,轻/重量级锁)和基本的锁升级策略

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    5.2 java虚拟机的生命周期 5.3 java虚拟机的体系结构 5.3.1 数据类型 5.3.2 字长的考量 5.3.3 类装载器子系统 5.3.4 方法区 5.3.5 堆 5.3.6 程序计数器 5.3.7 java栈 5.3.8 栈帧 ...

    Java2游戏编程.pdf

    2.2 比特和字节:原始的Java类型 2.2.1 基本的整数类型 2.2.2 浮点类型 2.2.3 Char类型 2.2.4 布尔型 2.2.5 String类型 2.2.6 强制转换变量类型 2.2.7 Java数据类型、数组和标识符需要记忆的要点 2.3 Java中的运算符...

    C++转JAVA入门总结

    1. 内置数据类型 2. string类 3. 数组 4. 循环分支 5. 工具类(数据容器、日期、正则表达式……) 6. JAVA流、文件、IO 7. JAVA异常 8. JAVA继承 1. 抽象类与抽象方法 2. JAVA接口 ...6. JAVA类生命周期

    Java组件设计.pdf

    6. 组件生命周期:在 Java 中,组件可以有不同的生命周期,例如创建、初始化、启动、运行、停止、销毁等。 7. 组件模式:Java 中有多种组件模式,例如 MVC 模式、MVP 模式、MVVM 模式等,每种模式都有其特点和应用...

    Java优化编程(第2版)

    8.3.1 如何控制无状态会话ejb的生命周期 8.3.2 通过调节无状态会话ejb实例池的大小来优化系统性能 8.3.3 无状态会话ejb资源的缓冲与释放 8.4 优化有状态会话ejb性能 8.4.1 控制有状态会话ejb生命周期 8.4.2 优化有...

    Java的垃圾收集机制

    垃圾收集器线程是一种低优先级的线程,在一个Java程序的生命周期中,它只有在内存空闲的时候才有机会运行。它有效地防止了内存渗漏体的出现,并极大可能地节省了宝贵的内存资源。但是,通过Java虚拟机来执行垃圾收集...

    Java清华教程.rar

     ■ 多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步;  ■ Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计; ...

    《计算机程序设计员JAVA》(三级).pdf

    * 软件开发的基础知识:包括软件开发的生命周期、软件开发的特点、软件工程的开发步骤等。 (二)应用操作 * Java EE标准技术:包括JDBC的概念、JDBC的作用、JDBC调用存储过程、JDBC与Hibernate的区别、使用JDBC获得...

Global site tag (gtag.js) - Google Analytics