
性能优化
曾燕辉
高级开发、高级软件工程师
展开
-
JMH各参数使用介绍
转载自:赵伊凡's Blog这里说道的基准测试Benchmark其实是微基准测试Micro-Benchmark。这里面的概念就不详细介绍了,反正就是JMH可以非常方便的帮助我们进行java代码的简单基准测试。有什么用可以对多组代码进行基准测试比较。很多人总说,这样用速度快,性能好,别听他们的,自己试过才知道。Java的基准测试需要注意的几个点测试前需要预热。防止无用代码进...转载 2018-11-04 16:26:57 · 3985 阅读 · 0 评论 -
使用JMH做吞吐量测试
转载自:《使用JMH做Java微基准测试》摘要: # 使用JMH做Java微基准测试 在使用Java编程过程中,我们对于一些代码调用的细节有多种编写方式,但是不确定它们性能时,往往采用重复多次计数的方式来解决。但是随着JVM不断的进化,随着代码执行次数的增加,JVM会不断的进行编译优化,使得重复多少次才能够得到一个稳定的测试结果变得让人疑惑,这时候有经验的同使用JMH做Jav...转载 2018-11-04 16:17:22 · 3231 阅读 · 3 评论 -
基于Maven的JMH的搭建和使用
转载自:《JMH使用说明》JMH使用说明一、概述JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件。何谓Micro Benchmark呢?简单的来说就是基于方法层面的基准测试,精度可以达到微秒级。当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用JMH对优化的结果进行量化的分析。和其他竞品相比——如果有的话,JMH最有特色的地...转载 2018-11-04 15:32:57 · 4158 阅读 · 1 评论 -
深入理解JVM性能调优
转载自:https://blog.csdn.net/elvis_lfc/article/details/52313400我们知道,性能问题无非就这么几种:CPU、内存、磁盘IO、网络。那我们来逐一介绍以下相关的现象和一些可能出现的问题。一、CPU过高。查看CPU最简单的我们使用任务管理器查看,如下图所示,windows下使用任务管理器查看,Linux下使用top查看。一般我们的服务器都采用Linu...转载 2018-07-02 15:34:32 · 169 阅读 · 0 评论 -
JVM 性能调优实战之:一次系统性能瓶颈的寻找过程
转载自:https://blog.csdn.net/defonds/article/details/52598018玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈。性能优化分为好几个层次,比如系统层次、算法层次、代码层次...JVM 的性能优化被认为是底层优化,门槛较高,精通这种技能的人比较少。笔者呆过几家技术力量不算弱的公司,每个公司内部真正能够进...转载 2018-07-02 15:28:08 · 237 阅读 · 0 评论 -
深入理解JVM—性能监控工具
源自博客园: http://www.cnblogs.com/duanxz/p/3712734.html我们知道,在JVM编译期和加载器,甚至运行期已经做了大量的调优操作,但是那些都是JVM针对Java程序所做的通用的、简单的优化,程序在运行时由于运行环境的复杂性、业务逻辑的复杂性,很多JVM是无法进行优化处理的,这就需要我们自己在写代码的时候就注意,以便我们的程序在特定的业务场景发挥到最佳性能。要...转载 2018-07-02 15:22:28 · 191 阅读 · 1 评论 -
无法连接java visualvm插件中心
打开Java VisualVM检查更新插件时,默认的连接连不上,通过浏览器访问之后发现默认的服务器已经404,新地址已经迁移到github,下面这个地址里面有不同版本jdk对应的插件中心地址。 https://visualvm.github.io/pluginscenters.html...原创 2018-06-26 00:54:19 · 4880 阅读 · 1 评论 -
调用System.gc没有立即执行的解决方法
转载自:https://blog.csdn.net/yewei02538/article/details/52386642查看源码当我们调用System.gc()的时候,其实并不会马上进行垃圾回收,甚至不一定会执行垃圾回收,查看系统源码可以看到 /** * Indicates to the VM that it would be a good time to run the ...转载 2018-06-25 23:57:39 · 882 阅读 · 0 评论 -
聊聊JVM的垃圾回收机制GC
1. jvm结构图hotspot jvm结构如下(虚拟机栈和本地方法栈合一起了):2. jvm为什么分新生代和老年代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把...原创 2018-06-25 23:54:22 · 217 阅读 · 0 评论 -
JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别
java -Xms -Xmx -XX:PermSize -XX:MaxPermSize转载自:https://www.cnblogs.com/koik/p/4452029.html 在做java开发时尤其是大型软件开发时经常会遇到内存溢出的问题,比如说OutOfMemoryError等。这是个让开发人员很痛苦、也很纠结的问题,因为我们有时不知道什么样的操作导致了这种问题的发生。所以我们不得...转载 2018-06-25 16:38:34 · 283 阅读 · 0 评论 -
Java中的String,StringBuilder,StringBuffer三者的区别
转载自:https://www.cnblogs.com/su-feng/p/6659064.html最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。 这三个类之间的...转载 2018-06-25 12:12:02 · 171 阅读 · 0 评论 -
JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
一、背景转载自:https://www.cnblogs.com/dennyzhangdd/p/6770188.html1.1 永久代(PermGen)在哪里?根据,hotspot jvm结构如下(虚拟机栈和本地方法栈合一起了):上图引自网络,但有个问题:方法区和heap堆都是线程共享的内存区域。关于方法区和永久代:在HotSpot JVM中,这次讨论的永久代,就是上图的方法区(JVM规范中称为方法...转载 2018-06-25 11:57:27 · 823 阅读 · 0 评论