JavaAgent工具入门

JavaAgent 是一个 Java 运行时工具,它可以在 JVM 启动时,以代理的方式加载到 JVM 中。它可以通过在类加载过程中对字节码进行修改,来实现对应用程序行为的动态监测和改变。

原生AspectJ

AspectJ 是为了解决面向切面的编程而诞生的,通过它可以在Java应用程序中织入横切关注点,比如日志、性能分析、安全检查等。AspectJ 定义了一套自己的语法,拥有自己的编译器。

HashMap 并发死循环分析

前言HashMap 存在并发死循环的问题,在1.7版本之前是因为多线程并发调用 put 方法容易产生环状链表,之后如果再调用get方法,如果刚好命中环状链表所在的槽位,则会用导致死循环,使得 CPU 占用率飙升.在JDK 1.8 之后,这一问题得到了修复,但是仍旧在某些特殊的情况下会发生另外一种死循环。这里就这两种情况逐一进行分析.链表的插入方式在分析之前,我们先了解一下链表的两种插入方式:头插法

Java项目中引入Groovy的优化过程

背景项目中需要动态的配置规则,所以技术选型上选择了跟Java融合度比较高的 Groovy(因为可以直接调用java的类库),但是由于缺乏groovy实战经验,在项目开发过程中遇到了以下问题:JVM metaspace 持续 OOM即在项目部署后,业务调用量上来后,Metaspace 空间持续不断上涨,当 commited 的大小接近 Metaspace 的设置值(-XX:MetaspaceSize