Java性能优化指南 | 江南白衣

正文

来了唯品会一年多,不少时间花在与服务化框架、业务应用的性能的缠斗上。

前几天正好趁着中生代技术的十月十城技术沙龙,把脑海中关于性能优化的记忆全部理了一遍....讲完回家,又本着认真严谨的态度再理了一遍,终于成为现在这份66页的PPT

各位客官,1.8版内容略有增减,超链接也已修好,请重新下载。

范围

应用性能,受操作系统参数,三方类库选择,数据库查询,甚至压测工具如JMeter本身调优的影响。

本次分享只着重在三方面:

  • JVM的调优
  • 代码的调优
  • 定位性能问题的工具

基本原则

网上如此多新旧不一的资料,这么多肆意传播亦真亦错的观点,怎么办呢?

  1. 多看一些靠谱的资料,问一些靠谱的人。
  2. 怀疑一切,微基准测试一切,诚意推荐JMH。
  3. 看JDK代码,看一切代码。

JVM优化

首先,JIT入门知识;

然后,JVM参数的简介;

再然后,最头痛的GC问题的处理。





代码优化

代码优化,两大方向:

一是面向GC的编程,

二是并发与锁,

然后再来聊聊其他。


问题定位工具集

黑盒调优是最不可靠的,推荐线下用JMC,线上用BTrace定位问题。

PPT下载地址:http://calvin1978.blogcn.com/articles/javatuning.html

本文转载自微信公众号 中生代技术 freshmanTechnology

时间: 2024-10-27 03:27:14

Java性能优化指南 | 江南白衣的相关文章

Java 性能优化之 String 篇

String 在 JVM 的存储结构 一般而言,Java 对象在虚拟机的结构如下: 对象头(object header):8 个字节 Java 原始类型数据:如 int, float, char 等类型的数据,各类型数据占内存如 表 1. Java 各数据类型所占内存. 引用(reference):4 个字节 填充符(padding) 表 1. Java 各数据类型所占内存 然而,一个 Java 对象实际还会占用些额外的空间,如:对象的 class 信息.ID.在虚拟机中的状态.在 Oracle

Java性能优化技巧汇总_java

本文实例汇总了Java性能优化技巧.分享给大家供大家参考.具体分析如下: 这里参考了些书籍,网络资源整理出来,适合于大多数Java应用 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1.尽量使用final修饰符. 带有final修饰符的类是不可派生的.在JAVA核心API中,有许多应用final的例子,例如java.lang.String.为String类指定final防止了使用者覆盖length()方法.另外,如

jQuery性能优化指南

jQuery性能优化指南,可以从以下12个方向考虑. 1,总是从ID选择器开始继承 2,在class前使用tag(标签名) 3,将jQuery对象缓存起来(在多次使用是,用一个中间变量代替,而不是总是用选择器)   4,对直接的DOM操作进行限制 5,注意尽量减少事件冒泡 6,推迟到 $(window).load   7,压缩JavaScript 8,尽量使用ID代替Class. 9,给选择器一个上下文   10,慎用 .live()方法(应该说尽量不要使用) 11,子选择器和后代选择器   1

Java性能优化[1]:基本类型 vs 引用类型

在Java性能优化系列中,内存管理是一个要优先考虑的关键因素.而说到内存分配,就必然会涉及到 基本类型和引用类型.所以我们今天就先来介绍一下这两种类型在性能方面各自有什么奥妙(关于这两 种类型在其它方面的奥妙,我会另外写一个帖子). ★名词定义 先明确一下什么是基本类型,什么是引用类型.简单地说,所谓基本类型就是Java语言中如下的8种 内置类型:boolean.char.byte.short.int.long.float.double.而引用类型就是那些可以通过 new来创建对象的类型(基本上

Web 开发者的 HTTP/2 性能优化指南

本文讲的是Web 开发者的 HTTP/2 性能优化指南, HTTP/2改变了Web开发者优化网站的方式.在HTTP/1.1中,为了压缩5%的页面加载速度,人们会通过雪碧图.内联代码.细分域名.合并代码等方式,来想方设法地优化TCP连接和HTTP请求. HTTP/2带来了些许便利.一般网站无需复杂的构建和部署流程即可获得30%的性能提升.在这篇文章中,我们会讨论HTTP/2下网站优化的最佳实践. HTTP/1.1中的Web优化 HTTP/1.1中大多数的网站性能优化技术都是减少向服务器发起的HTT

java性能优化问题--如谁帮我看看

问题描述 java性能优化问题--如谁帮我看看 1年轻代全满,老年代全满,survivor老是空-满--空--满--这种状态和正常理解的三个内存区的转换和作用有误啊.如何解释? 2另外这个图是否说明文档需要内存在200M左右.该产品大概10人左右使用什么样的配置比较好? 3操作系统改为linux. 架构变为x64 jre改成server jre 内存升级到8g 对性能的提升有多大的作用.能提高百分59以上吗 4不修改代码的前提下 如何优化性能,帮放在tomcat假死无响应 5目前这情况来看 最合

15分钟了解Java性能优化以及一切你想知道的(转)

15分钟了解Java性能优化以及一切你想知道的   http://blog.csdn.net/kwensen/article/details/17302371  

Jquery 学习笔记(二)jQuery性能优化指南

Jquery 学习笔记(二) -jQuery性能优化指南 2009年11月30日 一 作者:   邦畿千里   1,总是从ID选择器开始继承 在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法. 例如有一段HTML代码: <div id="content"> <form method="post" action="#"> <h2>交通信号灯<

jQuery 性能优化指南 (1)_jquery

1,总是从ID选择器开始继承 在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法. 例如有一段HTML代码: 复制代码 代码如下: <div id="content"> <form method="post" action="#"> <h2>交通信号灯</h2> <ul id="traffic_light"&