
jvm
文章平均质量分 97
找不到、了
纵有千古,横有八荒。
前途似海,来日方长。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java直接内存的介绍和实现
Java中的直接内存是不受JVM管理的内存区域,通过ByteBuffer.allocateDirect()分配,由操作系统直接管理。相比堆内存,直接内存能减少数据拷贝和GC压力,提升I/O性能,但需手动释放或通过-XX:MaxDirectMemorySize限制大小。使用场景包括高性能网络通信(如Netty)和大文件处理,但存在内存泄漏风险。合理使用直接内存能优化性能,但需注意资源管理。原创 2025-08-04 20:39:36 · 552 阅读 · 0 评论 -
Java锁升级的详细介绍
Java锁机制包括偏向锁、轻量级锁和重量级锁三种类型,通过对象头中的锁标志位区分(01、00、10)。偏向锁适用于无竞争场景,记录线程ID避免同步操作;轻量级锁通过CAS机制实现线程交替访问;当竞争激烈时升级为重量级锁,依赖操作系统互斥量实现线程阻塞。JDK15后偏向锁默认禁用,现代应用更推荐基于CAS的轻量级锁实现。合理选择锁类型可显著提升多线程性能。原创 2025-07-05 00:24:36 · 909 阅读 · 0 评论 -
Synchronized锁同步下的monitor机制
摘要:本文深入解析了Java中Monitor机制与synchronized的实现原理。Monitor是JVM实现线程同步的基础机制,每个Java对象头中的MarkWord在锁升级为重量级锁时会指向外部ObjectMonitor结构。synchronized代码块通过monitorenter/monitorexit字节码指令实现,而同步方法则通过ACC_SYNCHRONIZED标志隐式加锁。文章详细阐述了对象内存布局、Monitor数据结构、同步过程以及wait/notify机制与Monitor的关系,揭示了原创 2025-07-04 20:58:49 · 1067 阅读 · 0 评论 -
JMM的三大特性、八大原子操作、happens-before原则
以下是主内存变量和工作内存变量的区别。1、lock(锁定):作用于主内存的变量,把一个变量标识为一条线程独占状态。作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。作用于主内存变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的load动作使用。作用于工作内存的变量,把read操作从主内存中得到的变量值放入工作内存的变量副本中。原创 2025-06-17 10:36:11 · 1168 阅读 · 0 评论 -
JVM 内存、JMM内存与集群机器节点内存的联系
在日常开发过程中,不知道你是否考虑。原创 2025-06-13 18:25:29 · 1321 阅读 · 0 评论 -
谈谈jvm的调优思路
调整JVM的堆内存可以帮助避免内存溢出,提高垃圾回收的效率。合适的垃圾回收器能够提高应用的响应速度和吞吐量。 在实际操作中,建议逐步调整参数,并结合性能监控工具来评估调优效果。原创 2025-05-20 22:50:37 · 1271 阅读 · 0 评论 -
JVM如何处理多线程内存抢占问题
在多线程环境下,JVM通过多种机制高效、安全地管理内存分配,避免线程竞争导致的性能下降或数据不一致问题。主要机制包括:TLAB(Thread-Local Allocation Buffer),为每个线程提供私有内存缓冲区,减少全局堆内存的竞争;CAS(Compare-And-Swap)操作,确保全局堆内存分配的原子性;逃逸分析,将未逃逸对象分配在栈上,避免堆内存竞争;以及锁优化技术如偏向锁和自旋锁,减少线程阻塞。此外,JVM还通过堆内存结构(新生代和老年代)和内存分配方式(指针碰撞和空闲列表)来优化内存管理原创 2025-05-18 13:16:07 · 1216 阅读 · 0 评论 -
Java对象的内存布局及GC回收年龄的研究
本文详细探讨了Java虚拟机(JVM)中对象的内存结构、垃圾回收(GC)机制以及对象晋升策略。首先,介绍了普通对象和数组对象的内存布局,包括对象头(MarkWord和ClassPointer)和实例数据的存储方式。接着,分析了GC在不同内存区域(新生代、老年代、元空间)的发生条件及对象晋升的规则,特别是通过15次MinorGC后对象从新生代晋升到老年代的设计。此外,文章还讨论了如何通过调整Survivor区大小或使用G1垃圾回收器来优化对象存活时间。最后,总结了JVM在设计GC年龄机制时如何在性能、内存效率原创 2025-05-15 19:19:38 · 1061 阅读 · 0 评论 -
如何打破双亲委派模型机制呢?
本文详细介绍了Java类加载机制,包括类加载的分类、双亲委派机制及其打破方式。类加载分为显式和隐式加载,显式加载通过代码直接调用ClassLoader,而隐式加载由JVM自动完成。双亲委派机制通过层次结构确保类加载的安全性和唯一性,但在某些场景下需要打破该机制,如SPI、热部署、OSGi等。文章还探讨了类加载器的层次结构、加载过程以及符号引用与直接引用的区别。最后,总结了类加载机制的价值及其在Java应用中的重要性。原创 2025-05-11 11:30:20 · 1088 阅读 · 0 评论 -
关于垃圾回收的三色标记算法的详细介绍
三色标记算法是JVM垃圾回收中的核心技术,广泛应用于CMS、G1等现代垃圾收集器。该算法将对象分为白色(未访问)、灰色(正在访问)和黑色(完全访问)三种状态,通过初始标记、并发标记、重新标记和垃圾清理四个阶段追踪和回收内存中的对象。初始标记和重新标记阶段需要暂停应用程序线程,而并发标记阶段则与应用程序并发执行,减少停顿时间。然而,并发标记过程中可能产生浮动垃圾和漏标问题,前者不影响程序正确性但占用内存,后者可能导致存活对象被错误回收。为解决漏标问题,JVM采用读屏障和写屏障技术记录引用关系变化。三色标记算法原创 2025-05-08 21:29:16 · 1409 阅读 · 0 评论 -
对Java 资源管理和引用体系的介绍
(如关闭非内存资源)。原创 2025-04-29 23:57:18 · 1069 阅读 · 0 评论 -
关于对JVM的知识整理
前言关于jvm的介绍,这块相对抽象一点,更多是底层的理论知识。通过对jvm的全方位的理解,可以加深我们在日常开发中代码的理解,以便于编写更健壮的逻辑代码。JVM是Java程序运行的核心组成部分,它负责将编译后的Java字节码(.class文件)转换为计算机能够理解的指令,从而执行Java程序。原创 2025-04-28 19:23:22 · 1587 阅读 · 0 评论 -
重新对Java的类加载器的学习
在Java中,类加载器(ClassLoader)是Java虚拟机(JVM)用来加载类的核心组件。它负责将Java字节码文件(.class文件)动态加载到内存中,并将其转化为JVM可以执行的类对象。类加载器是Java运行时系统的一部分,它支持Java的动态特性,使得Java程序可以在运行时加载类和接口。原创 2025-04-28 13:42:45 · 849 阅读 · 0 评论