jvm调优

Dubbo剖析

若如初见. 提交于 2019-12-16 04:14:41
本场 Chat 分享主要介绍如何进行 JVM 问题诊断,在排查过程中可以使用哪些工具, 通过示例对各种工具进行简单的讲解, 并引入相关的基础知识,在此过程中,结合作者的经验和学到的知识,提出一些观点和调优建议。 本场 Chat 内容将涉及如下: 环境准备与相关设置;常用性能指标介绍;JVM 基础知识和启动参数;JDK 内置工具介绍和使用示例;JDWP 简介;JMX 与相关工具;各种 GC 日志解读与分析;内存 dump 和内存分析工具介绍;面临复杂问题时可选的高级工具;应对容器时代面临的挑战; 阅读全文: http://gitbook.cn/gitchat/activity/5df23c93cc099269d503a0b8 您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。 来源: CSDN 作者: GitChat的博客 链接: https://blog.csdn.net/valada/article/details/103518713

Dubbo剖析

六月ゝ 毕业季﹏ 提交于 2019-12-16 03:44:22
本场 Chat 分享主要介绍如何进行 JVM 问题诊断,在排查过程中可以使用哪些工具, 通过示例对各种工具进行简单的讲解, 并引入相关的基础知识,在此过程中,结合作者的经验和学到的知识,提出一些观点和调优建议。 本场 Chat 内容将涉及如下: 环境准备与相关设置;常用性能指标介绍;JVM 基础知识和启动参数;JDK 内置工具介绍和使用示例;JDWP 简介;JMX 与相关工具;各种 GC 日志解读与分析;内存 dump 和内存分析工具介绍;面临复杂问题时可选的高级工具;应对容器时代面临的挑战; 阅读全文: http://gitbook.cn/gitchat/activity/5df23c9476c64b7fe6d49b47 您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。 来源: CSDN 作者: GitChat的博客 链接: https://blog.csdn.net/valada/article/details/103518714

深入浅出 JVM GC(4)常用 GC 参数介绍

放肆的年华 提交于 2019-12-11 22:56:00
# 前言 从前面的3篇文章中,我们分析了5个垃圾收集器,还有一些 GC 的算法,那么,在 GC 调优中,我们肯定会先判断哪里出现的问题,然后再根据出现的问题进行调优,而调优的手段就是 JVM 提供给我们的那些参数或者说选项,这些参数将会改变 GC 的运行方式。因此,他们显得极为重要。 我们将每一个垃圾收集器相关的参数一个一个娓娓道来,注意,楼主推荐一个小程序:前阿里 JVM 大神寒泉子的公众号里面有个小程序------JVM Pocket,这个小程序介绍了所有的 JVM 参数的作用,你可以在里面搜索你想知道的参数,也可以把你了解的参数写上去供大家参考。公众号:lovestblog。 值得注意的一点是,这些参数可能会重复,还记得我们之前的那张图吗,楼主觉得有必要再发一次: 可以看到,这些收集器会有一些重复,而且,某些参数也是会作用于所有的处理器,因此,我们下面的介绍可能会有一些重复。 还有一点就是,JVM 为我们设置了很多默认的参数,但是,如果可以的话,还是建议使用显式的声明,这样更能表达意图。否则,别人不一定知道我们是否知道这些默认值。 我们开始我们的参数之旅吧! # 1. Serial 收集器参数 串行收集器,client 的默认收集器,分为年轻代 Serial 和老年代 Serial Old 收集器。 -XX:+UseSerialGC

【深入理解JVM】学习笔记——-5、调优案例分析与实战

好久不见. 提交于 2019-12-11 05:00:41
你只管努力, ——剩下的交给时光。 一、案例 1.高性能硬件上的程序部署策略 2.集群间同步导致的内存溢出 3.堆外内存导致的溢出错误 4.外部命令导致系统缓慢 5.服务器JVM进程崩溃 6.不恰当数据结构导致内存占用过大 7.由Windows虚拟内存导致的长时间停顿 二、调优(Eclipse运行速度调优) 1.调优前的程序运行状态 2.升级JDK的性能变化及兼容问题 3.编译时间和类加载时间的优化 4.调整内存设置控制垃圾收集频率 5.选择收集器降低延迟 如果本文对你有一点点的帮助,请点个赞呗,谢谢~ 最后,若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复! 路漫漫其修远兮, 吾将上下而求索 。——白衣 来源: CSDN 作者: 白衣染霜陈 链接: https://blog.csdn.net/singit/article/details/103465332

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

醉酒当歌 提交于 2019-12-10 15:41:17
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。本文参考了网上很多资料,难以一一列举,在此对这些资料的作者表示感谢!关于JVM性能调优相关的资料,请参考文末。 A、 jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息。语法格式如下: 1 jps [options] [hostid] 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下: 1 -q 不输出类名、Jar名和传入main方法的参数 2 -m 输出传入main方法的参数 3 -l 输出main类或Jar的全限名 4 - v 输出传入JVM的参数 比如下面: 1 root @ubuntu :/ # jps -m -l 2 2458 org.artifactory.standalone.main.Main /usr/ local

JVM(五) 生产环境内存溢出调优

扶醉桌前 提交于 2019-12-08 12:43:32
1.gc配置参数 1.1 控制台打印gc日志 -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC(详细的gc信息) 1.2 输出gc日志到指定文件 -Xloggc: (例如: -Xloggc:C:\logs\gc.log) 1.3 Gc日志分块 -XX:-UseGCLogFileRotation -XX:GCLogFileSize = 8M 1.4 指定最小堆内存 -Xms (例如-Xms20M指定最小堆内存为20M) 1.5 指定最大堆内存 -Xmx (例如-Xms20M指定最大堆内存为20M) 1.6 指定新生代内存大小 -Xmn (例如-Xmn10M指定新生代内存为10M) 1.7 指定eden区在新生代的占比 -XX:SurvivorRatio=8 (eden比S0,S1区比例为8:1:1) 1.8元空间设置大小 -XX:MetaspaceSize 初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。 -XX:MaxMetaspaceSize 最大空间,默认是没有限制的。 1.9 指定创建的对象超过多少会直接创建在老年代 -XX:PretenureSizeThreshold

扒一扒JVM的垃圾回收机制,下次面试你准备好了吗

余生长醉 提交于 2019-12-08 11:14:35
如果想了解Java内存模型参考: jvm内存模型-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东) 相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋。 一、 技术背景你要了解吧 二、 哪些内存需要回收? 2.1 引用计数算法 2.1.1 算法分析 2.1.2 优缺点 2.1.3 是不是很无趣,来段代码压压惊 2.2 可达性分析算法 2.3 Java中的引用你了解多少 2.4 对象死亡(被回收)前的最后一次挣扎 2.5 方法区如何判断是否需要回收 三、常用的垃圾收集算法 3.1 标记-清除算法 3.2 复制算法 3.3 标记-整理算法 3.4 分代收集算法 3.4.1 年轻代(Young Generation)的回收算法 3.4.2 年老代(Old Generation)的回收算法 3.4.3 持久代(Permanent Generation)的回收算法 四、常见的垃圾收集器 五、GC是什么时候触发的(面试最常见的问题之一) 5.1 Scavenge GC 5.2 Full GC 结束语 一、 技术背景你要了解吧   按照套路是要先装装X,谈谈JVM垃圾回收的前世今生的。说起垃圾回收(GC)

MapReduce

有些话、适合烂在心里 提交于 2019-12-06 21:44:52
Hadoop为用户作业提供了多种可配置的参数,以允许用户根据作业特点调整这些参数值使作业运行效率达到最优。 一 应用程序编写规范 1.设置Combiner 对于一大批MapReduce程序,如果可以设置一个Combiner,那么对于提高作业性能是十分有帮助的。 Combiner可减少Map Task中间输出的结果,从而减少各个Reduce Task的远程拷贝数据量 ,最终表现为Map Task和Reduce Task执行时间缩短。 2. 选择合理的Writable类型 在MapReduce模型中,Map Task和Reduce Task的输入和输出类型均为Writable。Hadoop本身已经提供了很多Writable实现,包括IntWritable、 FloatWritable。为应用程序处理的数据选择合适的Writable类型可大大提升性能。比如处理整数类型数据时,直接采用 IntWritable比先以Text类型读入在转换为整数类型要高效 。 如果输出整数的大部分可用一个或两个字节保存,那么直接采用VIntWritable或者VLongWritable,它们采用了变长整型的编码方式,可以大大减少输出数据量。 二 作业级别参数调优 1.规划合理的任务数目 在Hadoop中,每个Map Task处理一个Input Split。Input

hadoop MapReduce

北城以北 提交于 2019-12-06 19:24:18
1.Combiner的作用是什么? 2.作业级别参数如何调优? 3.任务及管理员级别有哪些可以调优? Hadoop为用户作业提供了多种可配置的参数,以允许用户根据作业特点调整这些参数值使作业运行效率达到最优。 一 应用程序编写规范 1.设置Combiner 对于一大批MapReduce程序,如果可以设置一个Combiner,那么对于提高作业性能是十分有帮助的。 Combiner可减少Map Task中间输出的结果,从而减少各个Reduce Task的远程拷贝数据量 ,最终表现为Map Task和Reduce Task执行时间缩短。 2. 选择合理的Writable类型 在MapReduce模型中,Map Task和Reduce Task的输入和输出类型均为Writable。Hadoop本身已经提供了很多Writable实现,包括IntWritable、 FloatWritable。为应用程序处理的数据选择合适的Writable类型可大大提升性能。比如处理整数类型数据时,直接采用 IntWritable比先以Text类型读入在转换为整数类型要高效。 如果输出整数的大部分可用一个或两个字节保存,那么直接采用VIntWritable或者VLongWritable,它们采用了变长整型的编码方式,可以大大减少输出数据量。 二 作业级别参数调优 1.规划合理的任务数目 在Hadoop中

初识JVM

匆匆过客 提交于 2019-12-06 13:54:12
   一、程序计数器    记住下一条jvm指令的执行地址,解释器会去程序计数器拿jvm指令。  线程私有的,CPU会给每个线程分配时间片,时间片执行完会切换线程。    唯一不会出现内存溢出的区域。 二、虚拟机栈    线程运行需要的内存空间,每个线程都有一个栈。    由多个栈帧组成,每个方法运行需要的内存(参数、局部变量、返回值),先入后出。    每个线程只能有一个活动栈帧,就是正在执行的方法。    垃圾回收不涉及栈内存。    栈内存参数:-Xss 1024k。栈内存变大,总线程就会变少。    方法内的局部变量如果没有逃离方法的作用范围,则是线程安全的。    栈内存溢出错误:StackOverflowError     案例:     (一)CPU占用过高        1、查看所有进程的cpu占用率,获取哪个进程占用cpu最高:top。       2、查看某个进程的哪个线程占用cpu最高:ps H -eo pid,tid,%cpu | grep ${pid}。       3、查看某个进程的所有线程详细信息:jstack ${pid}。 三、本地方法栈    本地方法运行使用的内存,例如object.clone(),被native修饰的。 四、堆(heap)    通过new创建的对象都会放在堆中,线程共享的,有垃圾回收机制。    内存溢出异常:java