
Java虚拟机
Benett-Chen
心存美好,向往未来
展开
-
jvm sandbox实现字节码增强
1.安装jvm-sandbox2.引入依赖<parent> <groupId>com.alibaba.jvm.sandbox</groupId> <artifactId>sandbox-module-starter</artifactId> <version>1.2.0</version></parent>3.编写脚本@MetaInfServices( Module.class原创 2020-06-27 09:36:34 · 988 阅读 · 0 评论 -
自己实现字节码增强
使用技术:Javassist , Instrument,JVMTI , javaagent,Attach APIJVMTI:JVM TI(JVM TOOL INTERFACE,JVM 工具接口)是 JVM 提供的一套对 JVM 进行操作的工具接口。通过 JVMTI,可以实现对 JVM 的多种操作,它通过接口注册 各种事件勾子,在 JVM 事件触发时,同时触发预定义的勾子,以实现对各个 JVM 事件的响应,事件包括类文件加载、异常产生与捕获、线程启动和结束、进入和退 出临界区、成员变量修改、GC 开始和结束原创 2020-06-27 09:36:01 · 546 阅读 · 0 评论 -
jvm-sandbox分享
引子相信大家都遇到过这种场景,线上出故障了,但是关键代码里面忘记打日志了,导致无法复现和准确定位问题。这时候可能需要重写加上日志,部署到服务器,但这第一耗时间,第二可能破坏现场,比如可能是线程池的问题呢?所以如果可以不重启服务器,就可以给代码加上日志,是多么棒的一件事呀。那能不能实现,of course。简述实现当然市面上有很多工具可以实现热部署,我们先来看一下,如果我们自己实现,思路是什么。我们知道Java对象的行为(函数,方法)是存储在方法区的,从下图可以看到,方法区的数据是由类加载器把编译好的.原创 2020-06-26 20:40:49 · 1693 阅读 · 0 评论 -
java内存分析
大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其中Method Area 和 Heap 是线程共享的 ,VM Stack,Na...原创 2017-04-25 16:34:07 · 5000 阅读 · 0 评论 -
Java垃圾回收器
Java垃圾回收器先来预览一下Java各个版本的HotSpot JVM收集器: 注:图片上面为新生代收集器,下面为老年代收集器,连线说明可以搭配使用。 Serial(串行GC)收集器 Serial收集器是一个新生代收集器,单线程执行,使用复制算法。它在进行垃圾收集时,必须暂停其他所有的工作线程(用户线程)。是Jvm client模式下默认的新生代收集器。对于限定单个CPU的环境来说,Ser原创 2017-04-26 11:18:39 · 5039 阅读 · 0 评论 -
Minor GC、Major GC与Full GC
先简单介绍一下: Minor GC:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。 Major GC:是清理老年代。 Full GC:是清理整个堆空间—包括年轻代和老年代。 年轻代是大多数新对象创建和销毁的地方,对象从Young generation区域消失的过程我们称之为”minor GC“ 当年轻代满时,会引发“minor GC”。 新翻译 2017-08-28 17:58:39 · 5917 阅读 · 0 评论