jvm
子♂衿
人生的意义又是什么呢?
展开
-
JVM类加载图示
拿图请标明出处原创 2021-04-03 21:54:03 · 3158 阅读 · 0 评论 -
finally这样写会吞掉异常?
在finally中写return语句最终会造成吞掉异常的后果 从JVM指令层面来看 可以看到 如果从 0 到 9 (不包含9) 出现了任何异常都会跳转到 8的位置 而接下来所做的,仅仅只把异常对象存储到了局部变量表中的0号位置,接着把30放入栈顶就返回了 期间丢失了 athrow指令,所以不会有任何异常堆栈的显示,所以在开发中最好不要在finally 中写return语句,否则会吞噬异常 ...原创 2020-07-19 14:44:56 · 10621 阅读 · 2 评论 -
一文学会使用MethodHandle
MethodHandle方法句柄 第一次看到这个类是在看Mybatis源码,自以为对java很熟悉,反射很熟的我,看到这个API竟然不知道是干什么用的 因此花了很多时间去了解这个东西,发现网上的资料是很少的,特别是对刚接触这个api的人很不友好,后来通过自己的不断验证,不断查找资料,终于有了一些自己的了解,但还是不是很深,因为这套Api涉及到jVM指令层去了 MethodHandles 这个类有一下三点作用 查找方法,以及可以帮助字段或者方法创建相应的方法句柄(MethodHandle) 组合器方法,用于原创 2020-07-19 14:34:19 · 11733 阅读 · 0 评论 -
java不通过构造函数创建对象(Unsafe)
java中不通过构造函数创建对象(也有说不创建对象直接执行成员方法) 这里就不和你们扯什么通过 反序列化、clone等方法了 个人觉得都是在胡扯。 如何不执行构造函数创建对象? 先来带大家认识一个类 sun.misc.Unsafe 该类主要提供一些直接访问系统内存资源等等(学过C语言的应该知道和C语言中的指针一样),但是由于此类能够直接操作内存,这无疑也增加了程序的安全风险。所以技术不是那么好的千万不要在应用中直接使用哟。 从上图可以看出 java是不允许直接创建该类对象的,但是我们可以看到第一个红框原创 2020-05-31 17:02:16 · 13372 阅读 · 1 评论 -
案例,实战演示线上定位哪个线程占CPU执行时间最多
首先来查看一个 top命令给出的信息 图中有一个java进程占用了CPU执行时间的百分之99,我们到线上也难免会出现这种问题,那么出现这种问题我们该怎么排查呢? 首先我们已经知道了占用CPU执行时间的进程ID,即16578 那么我们可以使用 top H -p pid 和 ps H -eo pid,tid, %cpu pid 这两个命令中任意一个命令来获取这个进程中是哪个线程占用了执行时间,这里我...原创 2020-03-13 09:50:26 · 10379 阅读 · 0 评论 -
自定义类加载器详细分析
最近一段时间发现好多小伙伴对类加载器的认实还停留在很浅的一个层面所以我想特意出一系列关于java类加载的一些讲解 今天我们从最简单的将起,如何自定义一个类加载器 首先我们先来说说java中有哪几种类加载器 加上我们自定义类加载器一共四种, 其中启动类加载器是由 c++实现的 在java中用"null"来表示,除此之外,扩展类加载器,以及系统类加载器都是由java实现的,并且都直接或间接的继承了C...原创 2020-02-23 01:04:01 · 10659 阅读 · 0 评论