Ali's blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

JVM G1 GC 的算法与实现

G1GC 是什么?G1GC(Garbage First Garbage Collection)是在 OpenJDK 7 中引入的 GC 算法,其最大的特点就是非常重视实时性。 一些基本概念实时性程序具有实时性,是指程序必须能在最后期限(deadline)之前完成,其中最后期限可以自由指定。实时性分为两种: 硬实时性(hard real-time):每次处理的时间都不能超过最后期限,比如医疗机器人
2022-03-16
java

Netty HashedWheelTimer 时间轮源码详解

背景HashedWheelTimer 本质是一种类似延迟任务队列的实现,适用于对时效性不高的,可快速执行的,大量这样的“小”任务,能够做到高性能,低消耗。 时间轮是一种非常惊艳的数据结构。其在 Linux 内核中使用广泛,是 Linux 内核定时器的实现方法和基础之一。Netty 内部基于时间轮实现了一个 HashedWheelTimer 来优化 I/O 超时的检测。 因为 Netty
2022-03-02
组件&中间件知识

Java Features from Java 8 to Java 17

文章原文链接:https://reflectoring.io/java-release-notes/#diamond-syntax-with-inner-anonymous-classes A lot has changed in Java from its beginnings in 1995 until today. Java 8 was a revolutionary release tha
2021-12-06
java

Java Stream 源码分析

前言Java 8 的 Stream 使得代码更加简洁易懂,本篇文章深入分析 Java Stream 的工作原理,并探讨 Steam 的性能问题。 Java 8 集合中的 Stream 相当于高级版的 Iterator,它可以通过 Lambda 表达式对集合进行各种非常便利、高效的聚合操作(Aggregate Operation),或者大批量数据操作 (Bulk Data Operation)。
2021-12-03
java

Java String 演进全解析

前言String 是我们使用最频繁的对象,使用不当会对内存、程序的性能造成影响,本篇文章全面介绍一下 Java 的 String 是如何演进的,以及使用 String 的注意事项。 下面的输出结果是什么?123456789@Testpublic void testString() { String str1 = "abc"; String str2 = n
2021-11-29
java

Java NIO、Channel、Selector 详解

Java NIO 有三大组件: Buffer Channel Selector BufferBuffer 是一个特定原始类型的容器。Buffer 是一个原始类型的线性的、有限序列,除了 Buffer 存储的内容外,关键属性还包括:capacity, limit 和 position。 capacity:Buffer 包含的元素的数量,capacity 永远不会为负,也不会改变。 limit:
2021-10-14
java

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
1234

搜索

Hexo Fluid
总访问量 次 总访客数 人