随笔 - 2  文章 - 721  评论 - 6  阅读 - 35万

文章分类 -  JVM

1 2 下一页
CPU100%问题排查
摘要:导致Java程序CPU与内存冲高的原因: 代码中某个位置读取数据量较大,导致系统内存耗尽,从而导致Full GC次数过多,系统缓慢。 代码中有比较耗CPU的操作,导致CPU过高,系统运行缓慢。 代码某个位置有阻塞性的操作,导致该功能调用整体比较耗时,但出现是比较随机的; 某个线程由于某种原因而进入W 阅读全文
posted @ 2023-02-28 22:10 溪水静幽 阅读(88) 评论(0) 推荐(0) 编辑
双亲委派机制
摘要:启动(Bootstrap)类加载器 启动类加载器主要加载的是JVM自身需要的类,类加载使用C++语言实现的,是虚拟机自身的一部分,负责将 <JAVA_HOME>/lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中,注意必由于虚拟机是按照文件名识别加载jar包 阅读全文
posted @ 2022-06-20 22:04 溪水静幽 阅读(34) 评论(0) 推荐(0) 编辑
VisualVM性能分析之一
摘要:性能分析常用的有以下几种方式 : 监视: 一种用来查看应用程序运行时行为的一般方法。通常会有多个视图(View)分别实时地显示 CPU 使用情况、内存使用情况、线程状态以及其他一些有用的信息,以便用户能很快地发现问题的关键所在。 转储(dump):性能分析工具从内存中获得当前状态数据并存储到文件用于 阅读全文
posted @ 2020-12-13 16:53 溪水静幽 阅读(373) 评论(0) 推荐(0) 编辑
JVM 线上故障排查
摘要:CPU 飚高 思路:首先找到 CPU 飚高的那个 Java 进程,因为你的服务器会有多个 JVM 进程。然后找到那个进程中的 “问题线程”,最后根据线程堆栈信息找到问题代码。最后对代码进行排查。 内存问题排查 通常一个健康的 GC 是什么状态呢?经验,YGC 5秒一次左右,每次不超过50毫秒,FGC 阅读全文
posted @ 2019-09-29 23:26 溪水静幽 阅读(119) 评论(0) 推荐(0) 编辑
jhat
摘要:jhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令。使用jmap可以生成Java堆的Dump文件。生成dump文件之后就可以用jhat命令,将dump文件转成html的形式,然后通过http访问可以查看堆情况。 使用jmap命令,还可以通过以下方式: S 阅读全文
posted @ 2019-09-29 22:45 溪水静幽 阅读(310) 评论(0) 推荐(0) 编辑
jstat
摘要:jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。 jstat位于java的bin目 阅读全文
posted @ 2019-09-29 20:52 溪水静幽 阅读(313) 评论(0) 推荐(0) 编辑
jmap
摘要:jmap主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 堆Dump是反应Java堆使用情况的内存镜像,其中主要包括系统信息、虚拟机属性、完整的线程Dump、所有类和对象的状态等。 常见内存错误: option 选项参数是互斥的(不可同时使用)。想要使用选项 阅读全文
posted @ 2019-09-29 20:18 溪水静幽 阅读(785) 评论(0) 推荐(0) 编辑
jvm常见命令
摘要:jps:查看本机的Java中进程信息。 jstack:打印线程的栈信息,制作线程Dump。 jmap:生成堆转储快照(heapdump) jstat:显示进程中的类装载、内存、垃圾收集、JIT编译等运行数据 jhat:一般与jmap搭配使用,用来分析jmap生成的堆转储文件。 jmap -dump: 阅读全文
posted @ 2019-09-27 22:47 溪水静幽 阅读(118) 评论(0) 推荐(0) 编辑
jstack
摘要:jstack是java虚拟机自带的一种堆栈跟踪工具。 功能 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停 阅读全文
posted @ 2018-11-28 14:58 溪水静幽 阅读(246) 评论(0) 推荐(0) 编辑
jps命令
摘要:位置 就在bin目录下,是java自带的一个命令 功能 jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令 原理 jdk中的jps命令可以显示当前运行的java进程以及相关参数,实现机制如下: ja 阅读全文
posted @ 2018-11-27 15:22 溪水静幽 阅读(616) 评论(0) 推荐(0) 编辑
ClassLoader.loadClass()与Class.forName()的区别
摘要:在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下: 装载:查找和导入类或接口的二进制数据; 链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选 阅读全文
posted @ 2018-11-11 21:33 溪水静幽 阅读(123) 评论(0) 推荐(0) 编辑
JVM调优
摘要:-XX:AutoBoxCacheMax JAVA进程启动的时候,会加载rt.jar这个核心包的,rt.jar包里的Integer自然也是被加载到JVM中,Integer里面有一个IntegerCache缓存,如下: IntegerCache有一个静态代码块,JVM在加载Integer这个类时,会优先 阅读全文
posted @ 2018-10-19 10:46 溪水静幽 阅读(101) 评论(0) 推荐(0) 编辑
收集器
摘要:调优的主要目标之一就是降低STW的时间,也就是减少Full GC的次数。那么从调优的角度来分析各个收集器的优势与不足。 年轻代的收集器开始(采用复制的收集算法): Serial收集器:一个单线程收集器,在进行回收的时候,必须暂停其他所有的工作线程,直到收集结束。缺点:因为要完全暂停线程,所以用户体验 阅读全文
posted @ 2018-10-19 09:38 溪水静幽 阅读(359) 评论(0) 推荐(0) 编辑
GC日志分析堆内存
摘要:通过分析GC日志来一步步讲解如何细化设置堆内存 -XX:+PrintGCDetails:用于告诉虚拟机回收垃圾的时候顺便打印日志 -Xloggc:路径 :将打印出来的日志信息保存至指定的路径 -Xmn10M:设置新生代的内存大小 -XX:SurvivorRatio=8:1调整Eden和Survivo 阅读全文
posted @ 2018-10-18 22:02 溪水静幽 阅读(402) 评论(0) 推荐(0) 编辑
MAT排查堆溢出
摘要:发现Java应用程序占用的内存出现了泄露的迹象,那么我们一般采用下面的步骤分析:1. 用工具生成java应用程序的heap dump(如jmap)2. 使用Java heap分析工具(如MAT),找出内存占用超出预期的嫌疑对象3. 根据情况,分析嫌疑对象和其他对象的引用关系。4. 分析程序的源代码, 阅读全文
posted @ 2018-10-18 20:39 溪水静幽 阅读(250) 评论(0) 推荐(0) 编辑
JVM的finalize()方法
摘要:第一次标记不在“链表”中的对象。第二次就要先判断该对象有没有实现finalize()方法,如果没有实现就直接判断该对象可回收;如果实现了就会先放在一个队列中,并由虚拟机建立的一个低优先级的线程去执行它,随后就会进行第二次的小规模标记,在这次被标记的对象就会真正的被回收了。我们来看下面的代码: 结果是 阅读全文
posted @ 2018-10-18 17:35 溪水静幽 阅读(255) 评论(0) 推荐(0) 编辑
垃圾回收算法
摘要:Java中的引用定义很很纯粹:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用 强引用:如“Object obj = new Object()”,这类引用是Java程序中最普遍的。只要强引用还存在,垃圾收集器就永远不会回收掉被引用的对象。 软引用 阅读全文
posted @ 2018-10-18 16:34 溪水静幽 阅读(110) 评论(0) 推荐(0) 编辑
java内存泄漏与内存溢出实例
摘要:内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory; java.lang.OutOfMemoryError,是指程序在申请内存时,没有足够的内存空间供其使用,出现OutOfMemoryError。 原因主要包括: 在程序上的体现为: 阅读全文
posted @ 2018-10-18 11:32 溪水静幽 阅读(807) 评论(0) 推荐(0) 编辑
JVM逃逸分析技术
摘要:在编程语言的编译优化原理中,分析指针动态范围的方法称之为逃逸分析。 逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。 通俗一点讲,当一 阅读全文
posted @ 2018-10-02 21:22 溪水静幽 阅读(260) 评论(0) 推荐(0) 编辑
java内存区域与内存溢出异常
摘要:运行时数据区域 程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。CPU的计算时间是以分片的方式给到每个线程的(换句话说,所谓的并行其实本质上还是串行),比如线程A执行到了一个地方,CPU将控制权给了线程B, 阅读全文
posted @ 2018-09-29 22:32 溪水静幽 阅读(115) 评论(0) 推荐(0) 编辑

1 2 下一页
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示