![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 95
码农参上
这个作者很懒,什么都没留下…
展开
-
面试官又整新活,居然问我for循环用i++和++i哪个效率高?
原创:微信公众号 码农参上,欢迎分享,转载请保留出处。前几天,一个小伙伴告诉我,他在面试的时候被面试官问了这么一个问题:在for循环中,到底应该用 i++ 还是 ++i ?听到这,我感觉这面试官确实有点不按套路出牌了,放着好好的八股文不问,净整些幺蛾子的东西。在临走的时候,小伙伴问面试官这道题的答案是什么,面试官没有明确告诉答案,只是说让从程序执行的效率角度自己思考一下。好吧,既然这个问题被抛了出来,那我们就见招拆招,也给以后面试的小伙伴们排一下坑。思路前面提到,这个搞事情的面试官说要从.原创 2021-11-24 11:26:10 · 1042 阅读 · 3 评论 -
偷天换日,用JavaAgent欺骗你的JVM
原创:微信公众号 码农参上(ID:CODER_SANJYOU),欢迎分享,转载请保留出处。熟悉Spring的小伙伴们应该都对aop比较了解,面向切面编程允许我们在目标方法的前后织入想要执行的逻辑,而今天要给大家介绍的Java Agent技术,在思想上与aop比较类似,翻译过来可以被称为Java代理、Java探针技术。Java Agent出现在JDK1.5版本以后,它允许程序员利用agent技术构建一个独立于应用程序的代理程序,用途也非常广泛,可以协助监测、运行、甚至替换其他JVM上的程序,先从下面这.原创 2021-11-17 09:02:53 · 1184 阅读 · 0 评论 -
动图图解GC算法 - 让垃圾回收动起来
原创:码农参上(微信公众号ID:CODER_SANJYOU),欢迎分享,转载请保留出处。提到Java中的垃圾回收,我相信很多小伙伴和我一样,第一反应就是面试必问了,你要是没背过点GC算法、收集器什么的知识,出门都不敢说自己背过八股文。说起来还真是有点尴尬,工作中实际用到这方面知识的场景真是不多,并且这东西学起来也很枯燥,但是奈何面试官就是爱问,我们能有什么办法呢?既然已经卷成了这样,不学也没有办法,Hydra牺牲了周末时间,给大家画了几张动图,希望通过这几张图,能够帮助大家对垃圾收集算法有个更好的理.原创 2021-09-27 10:19:41 · 1496 阅读 · 0 评论 -
Java筑基 - JNI到底是个啥
在前面介绍Unsafe的文章中,简单的提到了java中的本地方法(Native Method),它可以通过JNI(Java Native Interface)调用其他语言中的函数来实现一些相对底层的功能,本文我们就来顺藤摸瓜,介绍一下jni以及它的使用。首先回顾一下jni的主要功能,从jdk1.1开始jni标准就成为了java平台的一部分,它提供的一系列的API允许java和其他语言进行交互,实现了在java代码中调用其他语言的函数。通过jni的调用,能够实现这些功能:通常情况下我们一般使用jni用来原创 2021-05-11 08:58:19 · 312 阅读 · 0 评论 -
Java双刃剑之Unsafe类详解
前一段时间在研究juc源码的时候,发现在很多工具类中都调用了一个Unsafe类中的方法,出于好奇就想要研究一下这个类到底有什么作用,于是先查阅了一些资料,一查不要紧,很多资料中对Unsafe的态度都是这样的画风:其实看到这些说法也没什么意外,毕竟Unsafe这个词直译过来就是“不安全的”,从名字里我们也大概能看来Java的开发者们对它有些不放心。但是作为一名极客,不能你说不安全我就不去研究了,毕竟只有了解一项技术的风险点,才能更好的避免出现这些问题嘛。下面我们言归正传,先通过简单的介绍来对Unsafe原创 2021-04-30 09:14:42 · 1272 阅读 · 1 评论 -
再谈synchronized锁升级
在图文详解Java对象内存布局这篇文章中,在研究对象头时我们了解了synchronized锁升级的过程,由于篇幅有限,对锁升级的过程介绍的比较简略,本文在上一篇的基础上,来详细研究一下锁升级的过程以及各个状态下锁的原理。本文结构如下:文章目录1 无锁2 偏向锁2.1 偏向锁原理2.2 偏向锁升级2.3 批量重偏向2.4 批量撤销2.5 总结3 轻量级锁3.1 轻量级锁原理3.2 轻量级锁重入3.3 轻量级锁升级3.4 总结4 重量级锁4.1 Monitor4.2 重量级锁原理总结1 无锁在上一篇文章中原创 2021-04-12 09:09:15 · 212 阅读 · 1 评论 -
图文详解Java对象内存布局
作为一名Java程序员,我们在日常工作中使用这款面向对象的编程语言时,做的最频繁的操作大概就是去创建一个个的对象了。对象的创建方式虽然有很多,可以通过new、反射、clone、反序列化等不同方式来创建,但最终使用时对象都要被放到内存中,那么你知道在内存中的java对象是由哪些部分组成、又是怎么存储的吗?本文将基于代码进行实例测试,详细探讨对象在内存中的组成结构。全文目录结构如下:文章目录1、对象内存结构概述2、JOL 工具简介3、对象头3.1 Mark Word 标记字3.1.1 锁升级3.1.2 其他原创 2021-04-03 08:51:06 · 1008 阅读 · 1 评论