深入分析java web技术内幕----读书笔记(三)

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/62421108 claasloader读书笔记claasloader1、classloader将class加载到jvm中。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/62421108


claasloader读书笔记

claasloader

1classloaderclass加载到jvm中。

2、父优先的等级加载,双亲委派模型。

 

3defineclass用于将字节流解析成Class对象,主要用于读取class文件,以及网络文件中的类等。defineclass不会解析类,只会在此对象实例化时才会resolve

defineclassfindclass常一起使用,findclassclassloader中的方法,覆盖后可以自定义加载规则。

4this.getclass.getclassloader.loadclass可以在运行时加载指定类到程序。(只能在本程序的类加载器中加载).加载后还没解析,实例化时才resolve

5classforname()可以加载类并解析。

例子:;

Class.forName("org.java.lang",true,getClass().getClassLoader());参数为 类名、是否初始化、所用类加载器

getsystemclass也可以在自定义类加载器中加载类

 

6

Classloader是抽象类


  1. Bootstrap ClassLoader/启动类加载器 

    主要负责jdk_home/lib目录下的核心api-Xbootclasspath选项指定的jar包装入工作。

  2. Extension ClassLoader/扩展类加载器 

    主要负责jdk_home/lib/ext目录下的jar包或-Djava.ext.dirs指定目录下的jar包装入工作。

  3. System ClassLoader/系统类加载器 

    主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作。

  4. User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类

    在程序运行期间,通过java.lang.ClassLoader的子类动态加载class文件,体现java动态实时类装入特性。

     

    自定义的类加载器都继承自URLclassloader或其他子类。

    但这些类的父加载器都是appclassloader

    因为它们都调用getsystemclassloader作为父加载器,getsystemclassloader的返回值都是appclassloader

     

    7、加载一个类的过程

     

     

     

     

     

     

     

    8jvm表示一个类是否是同一个类有两个条件:

    1、完整类名是否一样

    2、加载该类的classloader是否是同一个类加载器的同一个实例

    (不仅要类相同,实例也要是同一个)。

     

    9、回收问题:classloader加载的类的字节码(就是。class)会被保存在jvm的永久代,它的对象无引用时也会被jvm回收,但如果大量动态加载类时,会造成永久带溢出。(因为永久代只在full gc时清理,若full gc不频繁,会造成永久代内存溢出)

     

    systemgc会触发垃圾回收,但不知道回收情况如何。

    一般情况下systemgc会触发full gc,会stop the worldfull gc一般回收老年代和永久代。

     

     

目录
打赏
0
0
0
0
254
分享
相关文章
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
161 0
Java 大视界 -- Java 大数据在智能家居能源消耗模式分析与节能策略制定中的应用(198)
简介:本文探讨Java大数据技术在智能家居能源消耗分析与节能策略中的应用。通过数据采集、存储与智能分析,构建能耗模型,挖掘用电模式,制定设备调度策略,实现节能目标。结合实际案例,展示Java大数据在智能家居节能中的关键作用。
|
16天前
|
Java Web 从入门到精通之苍穹外卖项目实战技巧
本项目为JavaWeb综合实战案例——苍穹外卖系统,涵盖Spring Boot 3、Spring Cloud Alibaba、Vue 3等主流技术栈,涉及用户认证、订单处理、Redis缓存、分布式事务、系统监控及Docker部署等核心功能,助你掌握企业级项目开发全流程。
134 0
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
71 0
Java 大视界 -- Java 大数据在智能教育学习社区用户互动分析与社区活跃度提升中的应用(274)
本文系统阐述 Java 大数据技术在智能教育学习社区中的深度应用,涵盖数据采集架构、核心分析算法、活跃度提升策略及前沿技术探索,为教育数字化转型提供完整技术解决方案。
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
119 2
Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
本文围绕 Java 大数据在智能安防入侵检测系统中的应用展开,剖析系统现状与挑战,阐释多源数据融合及分析技术,结合案例与代码给出实操方案,提升入侵检测效能。
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
95 7
|
3月前
|
【高薪程序员必看】万字长文拆解Java并发编程!(3-1):并发共享问题的解决与分析
活锁:多个线程相互影响对方退出同步代码块的条件而导致线程一直运行的情况。例如,线程1的退出条件是count=5,而线程2和线程3在其代码块中不断地是count进行自增自减的操作,导致线程1永远运行。内存一致性问题:由于JIT即时编译器对缓存的优化和指令重排等造成的内存可见性和有序性问题,可以通过synchronized,volatile,并发集合类等机制来解决。这里的线程安全是指,多个线程调用它们同一个实例的方法时,是线程安全的,但仅仅能保证当前调用的方法是线程安全的,不同方法之间是线程不安全的。
73 0
|
3月前
|
【高薪程序员必看】万字长文拆解Java并发编程!(3-2):并发共享问题的解决与分析
wait方法和notify方法都是Object类的方法:让当前获取锁的线程进入waiting状态,并进入waitlist队列:让当前获取锁的线程进入waiting状态,并进入waitlist队列,等待n秒后自动唤醒:在waitlist队列中挑一个线程唤醒:唤醒所有在waitlist队列中的线程它们都是之间协作的手段,只有拥有对象锁的线程才能调用这些方法,否则会出现IllegalMonitorStateException异常park方法和unpark方法是LockSupport类中的方法。
77 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等