![](https://img-blog.csdnimg.cn/20200916155315690.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
JVM
程序员卡卡西
架构就是取舍
展开
-
JVM性能调优——GC优化
当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。一、参数基本策略各分区的大小对GC的性能影响很大。如何将各分区调整到合适的大小,分析活跃数据的大小是很好的切入点。活跃数据的大小是指,应用程序稳定运行时长期存活对象在堆中占用的空间大小,也就是Full GC后堆中老年原创 2020-09-18 22:29:37 · 723 阅读 · 0 评论 -
JVM性能调优——垃圾回收机制
JVM 中栈、本地方法栈、程序计数器三个区域随线程而生,随线程而灭,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了。而堆、方法区则不一样,只有在程序处于运行期间才能知道会创建哪些对象,内存的分配和回收都是动态的,GC 所关注的是这部分内存。注意:Jdk1.8 移除了方法区 (永久代),替换为了元空间。1.标记算法对象被判断为垃圾的标准即没有被其他对象引用了,下面是两种标记算法原创 2020-09-16 14:54:42 · 106 阅读 · 0 评论 -
JVM性能调优——GC日志
阅读 GC 日志是处理 JVM 内存问题的基础技能,它只是一些人为确定的规则,每一种收集器的日志形式都是由它们自身的实现所决定的,但 JVM 设计者为了方便用户阅读,将各个收集器的日志都维持了一定的共性。例如下面两段典型的日志:33.125: [GC [DefNew: 3324K->152K (3712K), 0.0025925secs] 3324K->152K (11904K), 0.0031680 secs]100.667: [FullGC [Tenured: 0K->210K原创 2020-09-16 14:39:58 · 82 阅读 · 0 评论 -
JVM 性能调优——JVM Heap Dump 的生成和 MAT 的使用
生产环境中,一旦出现内存泄漏,长期运行下非常容易引发内存溢出(OutOfMemory,OOM)故障。为此,JDK 提供了一些内存泄漏的分析工具,如 jconsole,jvisualvm 等,用于辅助开发人员定位问题,但是这些工具很多时候并不足以满足快速定位的需求。Heap Dump的生成Linux 下使用 jmap 命令生成 Heap Dump:# java -version // 检验java环境# jps // 显示当前所有 JVM 进程 pid 的命原创 2020-08-09 00:03:19 · 208 阅读 · 0 评论 -
Java性能调优——线上问题排查
预备知识top命令top命令使我们最常用的Linux命令之一,它可以实时的显示当前正在执行的进程的CPU使用率,内存使用率等系统信息。top -Hp pid 可以查看线程的系统资源使用情况。jstack命令jstack是JDK工具命令,它是一种线程堆栈分析工具,最常用的功能就是使用 jstack pid 命令查看线程的堆栈信息,也经常用来排除死锁情况。mat内存工具MAT(Memory Analyzer Tool)工具是eclipse的一个插件(MAT也可以单独使用),它分析大内存的dump文件原创 2020-08-07 18:23:35 · 574 阅读 · 0 评论