logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

字节码执行学习总结:本地机器码由操作系统和CPU执行过程

本文总结了JIT编译器生成的本地机器码从HotSpot Code Cache到CPU执行的全过程。重点解析了JVM如何通过虚拟内存管理申请可执行内存,操作系统通过mmap与mprotect控制执行权限,最终由CPU完成取指、译码与执行。核心在于三者分工:JVM组织执行逻辑,操作系统提供安全环境,CPU负责指令执行。结合OpenJDK源码与Linux系统调用,深入剖析了nmethod管理、内存映射及

#linux#jvm#java +2
Linux内核IO多路复用epoll机制简介

本文介绍了Linux内核中epoll机制的核心设计与实现。epoll通过红黑树和就绪链表实现高效事件管理,相比select、poll具有O(1)的事件检测复杂度。关键结构体eventpoll和epitem分别管理epoll实例和被监听的文件描述符。系统调用epoll_create创建epoll实例,通过epoll_ctl操作红黑树,其中ep_insert将回调函数注册到目标文件的等待队列。epol

#linux#jvm#java +2
Linux内核epoll二种触发机制对比剖析

本文深入剖析了Linux内核中epoll的两种触发机制(ET边缘触发与LT水平触发)的核心差异。通过分析内核源码,揭示了两种模式在事件到达和交付阶段的不同处理逻辑:ET模式仅在状态变化时触发一次,而LT模式会持续通知直至事件被处理。文章通过伪代码和数据流演进图详细对比了二者在内核数据结构维护、系统调用开销等方面的差异,并指出ET模式必须配合非阻塞I/O和循环读写操作以避免数据滞留。最终总结了两种模

#linux#jvm#java +2
markwrord状态变对CPU核心与Linux内核的影响剖析

本文分析了JDK 8中markwrord状态变化对CPU和Linux内核的影响。markwrord是Java对象头的核心部分,通过低几位的组合实现了五种状态的复用(无锁、偏向锁、轻量级锁、重量级锁和GC标记)。在偏向锁模式下,由于无需原子指令操作,仅涉及CPU缓存的读写,避免了总线竞争;而轻量级锁则通过CAS操作实现,会导致CPU缓存行的无效化。当锁升级为重量级锁时,会触发Linux系统调用和线程

#linux#jvm#java +2
Linux内核epoll水平触发源码剖析

本文深入剖析了Linux内核中epoll水平触发与边缘触发的源码实现差异。通过分析eventpoll.c源码,重点解读了ep_send_events_proc()的处理逻辑,揭示了两种模式的核心区别:LT模式下内核会将未处理完的事件节点重新放回就绪链表,保证持续通知;ET模式下节点会被移出就绪链表,只有发生新事件时才会重新激活。文章还对比了两种模式在数据流处理上的性能影响,指出ET模式需要用户态循

#linux#jvm#java +2
Linux内核epoll边缘触发源码剖析

本文剖析了Linux内核中epoll边缘触发(ET)模式的源码实现机制。通过分析fs/eventpoll.c中的核心数据结构eventpoll和epitem,揭示了ET与水平触发(LT)的本质差异。关键发现包括:1事件生产阶段ET与LT无区别;2差异发生在事件消费阶段的ep_send_events_proc函数;3ET模式下事件被消费后会立即从就绪链表移除,而LT会保留未处理完的事件。文章详述了内

#linux#jvm#java +2
Linux内核IO多路复用poll机制简介

本文深入剖析Linux内核的poll系统调用实现了高效的文件描述符监控机制,其核心架构包含四阶段处理流程:1)用户态数据拷贝与初始化;2)首次轮询所有文件描述符;3)无事件时挂载进程到设备等待队列;4)睡眠唤醒后二次遍历返回结果。关键数据结构包括动态分块的poll_list链表、包含回调函数的poll_wqueues容器,以及连接设备队列的poll_table_entry节点。通过__pollwa

#linux#jvm#java +2
Linux内核IO多路复用工作机制对比分析

本文深入剖析了Linux内核中三种IO多路复用机制(select、poll、epoll)的核心差异。select采用固定位图结构(1024限制),存在遍历开销和内存拷贝问题;poll改用动态数组突破数量限制,但仍需全量数据拷贝;epoll创新性地引入红黑树管理监控描述符和就绪队列双向链表,通过事件回调机制实现高效监控。源码分析显示,select、poll存在重复注册和全量遍历问题,而epoll通过

#linux#jvm#java +2
深入解析Project Loom虚拟线程的底层实现原理

本文分析了Project Loom通过在JVM用户态实现Continuation与ForkJoinPool调度器,将虚拟线程(VirtualThread)与操作系统线程解耦,构建M:N调度模型。其核心是stackChunkOop堆内栈结构,支持动态链式扩容,实现纳秒级上下文切换。挂起(Freeze)时保存执行状态至堆内存,恢复(Thaw)时重建栈帧并跳转指令地址,由GC通过OopMap扫描栈帧引用

#linux#jvm#java +2
Kafka利用sendfile与Page Cache实现高性能传输剖析

本文剖析Kafka通过将消息缓存交由操作系统Page Cache,并结合sendfile零拷贝机制,实现高性能传输。其核心ge C在于:1)摒弃JVM堆内存缓存,避免GC停顿与内存开销;2)统一二进制格式,实现“零转换”;3)利用sendfile在内核态直接将Paache数据经SG-DMA直送网卡,减少上下文切换与CPU拷贝,显著降低延迟、提升吞吐。该设计使Kafka在高并发场景下具备接近原生性能

#linux#jvm#java +2
    共 102 条
  • 1
  • 2
  • 3
  • 11
  • 请选择