Java性能优化
文章平均质量分 89
性能学习
CodingALife
这个作者很懒,什么都没留下…
展开
-
Circuit Breaker熔断器
在分布式环境中,我们的应用可能会面临着各种各样的可恢复的异常(比如超时,网络环境异常),此时我们可以利用不断重试的方式来从异常中恢复(Retry Pattern),使整个集群正常运行。然而,也有一些异常比较顽固,突然发生,无法预测,而且很难恢复,并且还会导致级联失败(举个例子,假设一个服务集群的负载非常高,如果这时候集群的一部分挂掉了,还占了很大一部分资源,整个集群都有可能遭殃)。如果我们这时还是不断进行重试的话,结果大多都是失败的。因此,此时我们的应用需要立即进入失败状态(fast-fail),并采取转载 2021-01-20 15:38:54 · 839 阅读 · 0 评论 -
Java性能调优面试-7
gcviewer待整理官网:https://github.com/chewiebug/GCViewerG1 Gabage Collector-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC5部分参数第一部分:column title meaning of the column n number of events found min (s) duration of s...转载 2021-01-19 11:21:01 · 143 阅读 · 0 评论 -
Java性能调优面试-6
一、JVM调优参数简介1、 JVM参数简介-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。如果此类参数设置合理将大大提高JVM 的性能及稳定性。不稳定参数语法规则:1.布尔类型参数值 -XX:+<option> '+'表示启用该选项 -XX:-<option> '-'表示关闭该选项2.数字类型参数值: -XX:<option>=<...转载 2021-01-19 11:19:28 · 358 阅读 · 0 评论 -
Java性能调优面试-5
深入浅出JVM调优基本概念:JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。其他的都无需GC。下图文JVM的内存模型从图中我们可以看到,1、JVM实质上分为三大块,年轻代(YoungGen),年老代(Old Memory),及持久代(Perm,在Java8中被取消,我们不做深入介绍)。2、垃圾回收GC,分为2种,一是Minor GC,可以.转载 2021-01-19 11:17:22 · 225 阅读 · 0 评论 -
Java性能调优面试-2
1、JVM整体架构2、JVM内存模型1、类装载子系统将字节码文件【.class】装载到运行时数据区,即装载到方法区;2、执行引擎负责执行...原创 2021-01-17 16:32:41 · 539 阅读 · 6 评论 -
Java性能调优面试-4
1、线程池1.1、Thrift的原理理解1.2、服务调用方A调用服务B,如果A的QPS为1000,通过Thrift调用内部使用线程池内部128个线程,即通过128个线程并发调用服务B,如果服务B内部开了线程池20个线程,那么有<128*20的线程并发执行,不等于128*20是因为:某一个线程完成任务后会处理下一个任务。...原创 2021-01-20 00:20:15 · 151 阅读 · 3 评论 -
Java性能调优面试-3
1、GC调优步骤打印GC日志-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc.log1、因为Minor GC执行时间非常短对性能影响不大,当MinorGC执行次数非常多且密集,也是需要分析。2、正常FullGC间隔几十s或几分钟。此时仅仅间隔5s则不正常。3、元空间:在程序刚加载时会从0增长,因为需加载各种jar包而在程序正常执行时空间不变。 此时增大元空间大小。...原创 2021-01-18 10:22:04 · 281 阅读 · 2 评论 -
如何读懂火焰图?
软件的性能分析,往往需要查看 CPU 耗时,了解瓶颈在哪里。火焰图(flame graph)是性能分析的利器。本文介绍它的基本用法。一、perf 命令让我们从 perf 命令(performance 的缩写)讲起,它是 Linux 系统原生提供的性能分析工具,会返回 CPU 正在执行的函数名以及调用栈(stack)。通常,它的执行频率是 99Hz(每秒99次),如果99次都返回同一个函数名,那就说明 CPU 这一秒钟都在执行同一个函数,可能存在性能问题。$ sudo perf转载 2021-01-11 22:05:53 · 1229 阅读 · 0 评论