当前位置: 首页 > ds >正文

【学习笔记】深入理解Java虚拟机学习笔记——第9章 类加载及执行子系统的案例与实战

第9章 类加载及执行子系统的案例与实战

9.1 概述

程序能控制的主要是字节码生成与类加载器这两部分

9.2 案例分析

9.2.1 Tomcat:正统的类加载器架构

Tomcat通过不同路径及不同类加载器来实现类使用时的共享与隔离

9.2.2 OSGi:灵活的类加载器架构

通过将依赖类委派给相关类加载器来实现模块化(此时打破了双亲委派模型)
Bundle A 引用了Bundle B的公开Package时,由以上行为实现

9.2.3 字节码生成技术与动态代理的实现

动态代理接口生成代理类,在执行generateProxyClass()方法时动态生成字节码

9.2.4 Backport工具:Java的时光机器

Retrotrasslator可以使lambda与try-respirces语法转变为JDK5、6、7中的形式

9.3 实战:自己动手实现远程执行功能

1>Arthas:动态修改某一部分运行代码
2>compller API:动态编译Java程序
3>内置脚本执行引擎
4>内置动态执行功能

9.3.1 目标

P349

9.3.3 实现

P350

【Arthas如何用自己的代码访问到程序方法:
JDK1.6之后提供了JVM进程间的通信协议,使Arthas的进程可Attach到目标进程,此外JDK1.6还提供了agdent,可以代理目标进程,通过类加载机制加载字节码,可以实现动态的类替换,从而实现运行时对类的增强】

http://www.xdnf.cn/news/14516.html

相关文章:

  • 深度学习进化史:从神经元的诞生到万亿参数的觉醒
  • 掌握这些 Python 函数,让你的代码更简洁优雅
  • Git基本使用
  • npm install报错
  • Hudi 与 Hive 集成
  • https说明
  • RV1126+OPENCV对视频流单独进行视频膨胀/腐蚀操作
  • Spring AI 项目实战(八):Spring Boot + AI + DeepSeek 打造企业级智能文档分类系统
  • 40套精品大气黑金系列行业PPT模版分享
  • Web后端基础:数据库
  • 【JavaScript-Day 42】深入解析事件冒泡与捕获:掌握事件委托的精髓
  • 2、Java流程控制:编程界的“逻辑游乐场”
  • Leetcode 刷题记录 12 —— 二叉树第三弹
  • 六月十五号Leetcode
  • Apache Iceberg与Hive集成:非分区表篇
  • 【Redis】分布式锁
  • 我的项目管理之路-PMO
  • OpenSpeedy:让游戏体验“飞”起来的秘密武器
  • 基于CNN深度学习的小程序识别-视频介绍下自取
  • Android 修改了页面的xml布局,使用了databinding,这时候编译时需要用到apt吗
  • Node.js 中两种模块导出方式区别
  • Vue 组合式 API 与 选项式 API 全面对比教程
  • 期权入门介绍
  • PCB设计教程【大师篇】stm32开发板PCB布线(信号部分)
  • 附录:对于头结点单向链表的优化方法
  • AlibabaCloud+SpringCloud简述
  • 人工智能学习25-BP代价函数
  • RHCE 练习四:编写脚本实现以下功能
  • 10N65-ASEMI电机驱动方面专用10N65
  • 34.树形 DP