Java ClassLoader ClassLoader 简介是什么一个完整的 Java 应用程序由若干个 Java Class 文件组成,当程序在运行时,会通过一个入口函数来调用系统的各个功能,这些功能都被存放在不同的 Class 文件中。 因此,系统在运行时经常会调用不同 Class 文件中被定义的方法,如果某个 Class 文件不存在,则系统会抛出 ClassNotFoundException 异常。 系统程序在启动时,不会 2021-09-13 java
Java Lambda 表达式源码分析 Lambda 表达式是什么?JVM 内部究竟是如何实现 Lambda 表达式的?为什么要这样实现? 基本概念Lambda 表达式下面的例子中,() -> System.out.println("1") 就是一个 Lambda 表达式。Java 8 中每一个 Lambda 表达式必须有一个函数式接口与之对应。Lambda 表达式就是函数式接口的一个实现。 123456789 2021-08-18 java
一文看懂Java 对象的内存 说明本文绝大多数内容,都是直接摘自 高端面试必备:一个 Java 对象占用多大内存,因为这篇文章写得太好了,我觉得没有必要重新写一遍了 0_o Java 对象模型HotSpot JVM 使用名为 oops (Ordinary Object Pointers) 的数据结构来表示对象。这些 oops 等同于本地 C 指针。 instanceOops 是一种特殊的 oop,表示 Java 中的对象实例。 2021-08-17 java
Java Agent 使用指南 Java Agent 是什么?Java Agent 是一个特殊的 jar 文件,利用 JVM 的 Instrumentation API 来更改加载到 JVM 中的字节码。一共有 2 种方式: premain:使用 -javaagent 参数在 JVM 启动时静态加载代理 agentmain:使用 Java Attach API 将代理动态加载到 JVM 中 需要说明的是,Oracle、Ope 2021-07-31 java
Java资源大全中文版 前言GitHub项目地址:https://github.com/jobbole/awesome-java-cn Java资源大全中文版我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等 2021-07-27 java
深入分析 Java、Kotlin、Go 的线程和协程 前言Go 语言比 Java 语言性能优越的一个原因,就是轻量级线程Goroutines(协程Coroutine)。本篇文章深入分析下 Java 的线程和 Go 的协程。 协程是什么协程并不是 Go 提出来的新概念,其他的一些编程语言,例如:Go、Python 等都可以在语言层面上实现协程,甚至是 Java,也可以通过使用扩展库来间接地支持协程。 当在网上搜索协程时,我们会看到: Kotlin 2020-12-10 java
深入分析 Java 乐观锁 前言激烈的锁竞争,会造成线程阻塞挂起,导致系统的上下文切换,增加系统的性能开销。那有没有不阻塞线程,且保证线程安全的机制呢?——乐观锁。 乐观锁是什么?操作共享资源时,总是很乐观,认为自己可以成功。在操作失败时(资源被其他线程占用),并不会挂起阻塞,而仅仅是返回,并且失败的线程可以重试。 优点: 不会死锁 不会饥饿 不会因竞争造成系统开销 乐观锁的实现CAS 原子操作CAS。在 java.u 2020-12-08 java
深入分析 Java Lock 同步锁 前言Java 的锁实现,有 Synchronized 和 Lock。上一篇文章深入分析了 Synchronized 的实现原理:由Java 15废弃偏向锁,谈谈Java Synchronized 的锁机制。 本篇文章深入分析 Lock 的实现,以及对比其与 Synchronized 的不同。 Synchronized 与 Lock 的对比 实现方式:Synchronized 由 JVM 实现;L 2020-12-07 java