JVM
文章平均质量分 91
# JVM
思静鱼
大道至简,行稳致远
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
jstack 和jmap的区别
CPU 100%了?-> 先用top找到进程和线程,然后用 jstack分析该线程在干嘛。程序卡死了,不响应了?-> 用 jstack看看线程是不是都堵在某个锁上了(BLOCKED)或者死锁了。程序报了?-> 用 jmap生成堆转储(Heap Dump),然后使用或JVisualVM等工具加载分析.hprof文件,找出泄漏的对象和引用链。它们俩是JVM故障诊断中最常用、最强大的两个命令行工具,通常需要配合使用,从不同维度(线程 vs 内存)来定位复杂的应用问题。原创 2025-08-27 11:53:03 · 1043 阅读 · 0 评论 -
JVM调优分析工具和命令
是基于JAVA Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了JAVA程序的内存使用,堆和线程信息,类的分配状态和空间使用、检测死锁等;jvisualvm:JDK 自带的全能分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存的变化、gc 变化等。,以便分析线程的状态和堆栈信息。profler:一个商业的vm分析工具,可以监视vm中的内存,线程,gc等信息,并提供一些高级功能如。原创 2024-08-13 14:12:52 · 1029 阅读 · 0 评论 -
内存泄漏和内存溢出
内存泄漏:是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。内存溢出:OOM指程序申请内存时,没有足够的内存供申请者使用 1M 实际要占用 2M 内存,就说分配的内。原创 2024-08-12 16:40:29 · 1824 阅读 · 0 评论 -
JVM调优
JVM主要参数:堆设置、回收器选择(串行、并行、并发收集器)JVM 参数类型大致分为以下几类:标准参数(-),即在 JVM 的各个版本中基本不变的,相对比较稳定的参数,向后兼容;非标准参数(-X),变化比较小的参数,默认 JVM 实现这些参数的功能,但是并不保证所有 JVM 实现都满足,且不保证向后兼容;非Stable参数(-XX),此类参数各个 JVM 实现会有所不同,将来可能会随时取消,需要慎重使用;-Xmx3550m: 最大堆大小为3550m。原创 2024-08-12 16:16:40 · 1130 阅读 · 0 评论 -
频繁FullGC问题
频繁Full GC(Full Garbage Collection)是Java应用中常见的问题,频繁的Full GC(垃圾收集)问题会导致应用程序性能下降、响应时间变长,甚至可能导致应用程序停滞。,它会导致系统性能急剧下降,甚至引发系统卡死。原创 2024-07-01 21:54:00 · 3306 阅读 · 0 评论 -
JVM垃圾回收
垃圾回收(Garbage Collection,GC)是指自动管理程序中不再使用的内存的一种机制。在 Java 中,垃圾回收是由 JVM 负责的,它会自动监视和回收不再使用的对象,以释放它们所占用的内存。垃圾回收的主要目的是解决两个问题:一是释放已分配但不再被引用的对象占用的内存,二是为新对象的分配提供足够的可用内存空间。标记-清除算法(Mark and Sweep):该算法会先标记所有存活的对象,然后清理掉所有未标记的对象。这种算法可能导致内存碎片化,影响内存分配效率。原创 2024-05-28 11:30:41 · 1089 阅读 · 0 评论 -
JVM内存模型结构
JVM 内存模型结构包括方法区(Metaspace)、堆(Heap)、虚拟机栈(VM Stack)、本地方法栈(Native Method Stack)和程序计数器(Program Counter)。方法区(Metaspace):用于存储类的结构信息、静态变量、常量、即时编译器编译后的代码等数据。在 JDK 8 之前,方法区被实现为永久代(Permanent Generation),而在 JDK 8 及以后的版本中被改为使用元空间(Metaspace)来实现。原创 2024-05-28 09:24:07 · 887 阅读 · 0 评论 -
Java 类加载过程和双亲委派模型
在 Java 中,类装载器把一个类装入 Java 虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备、解析Java类加载过程分为如下步骤:1.装载( 加载):查找和导入类或接口的二进制数据;通过类的全限定名获取类的二进制字节流并存储在内存中。2.链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;校验(Verification):检查导入类或接口的二进制数据的正确性;验证字节流的正确性,包括文件格式、语法正确性等。原创 2024-05-27 11:41:53 · 558 阅读 · 0 评论 -
JVM详解
JVM(Java Virtual Machine)是Java平台的核心组件,它负责在运行时环境中执行Java字节码。JVM使得Java成为一种“一次编写,到处运行”(Write Once, Run Anywhere)的编程语言,因为无论在哪个平台上,只要安装了支持该平台的JVM,就可以运行Java程序。跨平台性:JVM是Java跨平台性的关键。Java源代码被编译成字节码(.class文件),这些字节码可以在任何支持JVM的平台上运行。原创 2024-05-24 10:44:59 · 1162 阅读 · 0 评论
分享