
JVM
文章平均质量分 93
自动内存管理、虚拟机执行子系统、程序编译与代码优化、高效并发。各个部分之间基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何一个感兴趣的专题开始阅读,但是每个部分各个章节间则有先后顺序。
曾梦想仗剑闯天涯
永远相信美好的事情即将发生!
展开
-
Java Agent 技术:动态修改字节码
Java Agent 技术为我们提供了一种强大的机制,在运行时动态修改已加载类的字节码。它可以用于实现代码注入、性能监控、调试工具和安全检查等功能,为我们的应用程序增添额外的灵活性和扩展性。希望本文能够帮助读者更好地理解和应用 Java Agent 技术,并发挥其潜力。原创 2023-08-21 09:40:29 · 1413 阅读 · 0 评论 -
Java动态字节码注入技术
Java动态字节码注入技术是一种在运行时修改Java字节码的技术。它允许开发者在程序运行期间动态地向现有的Java类中注入字节码,并改变类的行为和功能。这项技术通常用于实现AOP(面向切面编程)、代码增强、动态代理等需求。原创 2023-08-21 09:05:39 · 1975 阅读 · 0 评论 -
深入理解Java虚拟机(七)线程安全与锁优化
当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。原创 2023-07-20 11:08:57 · 183 阅读 · 0 评论 -
深入理解Java虚拟机(六)Java内存模型与线程
在正式讲解Java虚拟机并发相关的知识之前,我们先花费一点时间去了解一下物理计算机中的并发问题。物理机遇到的并发问题与虚拟机中的情况有很多相似之处,物理机对并发的处理方案对虚拟机的实现也有相当大的参考意义。原创 2023-07-20 10:13:07 · 200 阅读 · 0 评论 -
深入理解Java虚拟机(五)虚拟机类加载机制
Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。与那些在编译时需要进行连接的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略让Java语言进行提前编译会面临额外的困难,也会让类加载时稍微增加一些性能开销,但是却为Java应用提供了极高的扩展性和灵活性,Java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。原创 2023-07-19 16:59:20 · 466 阅读 · 0 评论 -
深入理解Java虚拟机(四)虚拟机性能监控、基础故障处理工具
给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括但不限于异常堆栈、虚拟机运行日志、垃圾收集器日志、线程快照(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。恰当地使用虚拟机故障处理、分析的工具可以提升我们分析数据、定位并解决问题的效率,但我们在学习工具前,也应当意识到工具永远都是知识技能的一层包装,没有什么工具是“秘密武器”,拥有了就能“包治百病”。原创 2023-07-19 10:37:39 · 260 阅读 · 0 评论 -
深入理解Java虚拟机(三)垃圾收集器与内存分配策略
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。原创 2023-07-18 16:21:17 · 337 阅读 · 0 评论 -
深入理解Java虚拟机(二)Java内存区域与内存溢出异常
对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为Java程序员把控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误、修正问题将会成为一项异常艰难的工作。原创 2023-07-18 15:27:08 · 1940 阅读 · 0 评论 -
深入理解Java虚拟机(一):Java虚拟机家族
许多Java程序员都会潜意识地把Java虚拟机与OracleJDK的HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA JRockit和IBM J9虚拟机,但绝大多数人对Java虚拟机的认识就仅限于此了。从1996年初Sun发布的JDK 1.0中包含的Sun Classic虚拟机到今天,曾经涌现、湮灭过许多或经典,或优秀,或有特色,或有争议的虚拟机实现,在此,我们先把代码与技术放下,一起来回顾Java虚拟机家族的发展轨迹和历史变迁。原创 2023-07-18 10:00:34 · 600 阅读 · 0 评论