性能优化

JVM性能优化一些概念简介

不羁岁月 提交于 2020-01-09 09:49:48
转自: https://www.iteye.com/blog/pengjiaheng-518623 https://www.iteye.com/blog/pengjiaheng-519471 数据类型 Java虚拟机中,数据类型可以分为两类: 基本类型 和 引用类型 。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress 引用类型包括: 类类型 , 接口类型 和 数组 。 堆与栈 堆和栈是程序运行的关键,很有必要把他们的关系说清楚。 栈是运行时的单位,而堆是存储的单位 。 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。 在Java中一个线程就会相应有一个线程栈与之对应,这点很容易理解,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈。而堆则是所有线程共享的。栈因为是运行单位,因此里面存储的信息都是跟当前线程(或程序)相关信息的。包括局部变量、程序运行状态、方法返回值等等;而堆只负责存储对象信息。 为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗 ? 第一

HBase性能优化方法总结

只谈情不闲聊 提交于 2020-01-09 00:30:13
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法。有关HBase系统配置级别的优化,可参考: 淘宝Ken Wu同学的博客 。 下面是本文总结的第一部分内容:表的设计相关的优化方法。 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。 有关预分区,详情参见: Table Creation: Pre-Creating Regions ,下面是一个例子: public static boolean createTable(HBaseAdmin admin, HTableDescriptor table, byte[][] splits) throws IOException { try { admin.createTable(table, splits); return true; } catch (TableExistsException e) { logger.info("table " + table

深入浅出 Java 8 Lambda 表达式

非 Y 不嫁゛ 提交于 2020-01-08 16:40:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 摘要 :此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等。本文系 OneAPM 工程师编译整理。 Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的函数或方法不可能完全独立,也不能将方法作为参数或返回一个方法给实例。 从 Swing 开始,我们总是通过匿名类给方法传递函数功能,以下是旧版的事件监听代码: someObject.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { //Event listener implementation goes here... } }); 在上面的例子里,为了给 Mouse 监听器添加自定义代码,我们定义了一个匿名内部类 MouseAdapter 并创建了它的对象,通过这种方式,我们将一些函数功能传给 addMouseListener 方法。 简而言之,在 Java 里将普通的方法或函数像参数一样传值并不简单,为此,Java 8 增加了一个语言级的新特性,名为 Lambda 表达式 。 为什么 Java 需要

HBase性能优化方法总结

这一生的挚爱 提交于 2020-01-08 05:39:14
1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。 有关预分区,详情参见: Table Creation: Pre-Creating Regions ,下面是一个例子: public static boolean createTable(HBaseAdmin admin, HTableDescriptor table, byte[][] splits) throws IOException { try { admin.createTable(table, splits); return true; } catch (TableExistsException e) { logger.info("table " + table.getNameAsString() + " already exists"); // the table already exists... return false; } } public static byte[][]

干货!SQL性能优化,书写高质量SQL语句

回眸只為那壹抹淺笑 提交于 2020-01-07 20:40:48
写SQL语句的时候我们往往关注的是SQL的执行结果,但是是否真的关注了SQL的执行效率,是否注意了SQL的写法规范? 以下的干货分享是在实际开发过程中总结的,希望对大家有所帮助! 1. limit分页优化 当偏移量特别大时,limit效率会非常低。 SELECT id FROM A LIMIT 1000,10 很快 SELECT id FROM A LIMIT 90000,10 很慢 方案一: select id from A order by id limit 90000,10; 复制代码 如果我们结合order by使用。很快,0.04秒就OK。 因为使用了id主键做索引! 当然,是否能够使用索引还需要根据业务逻辑来定,这里只是为了提醒大家,在分页的时候还需谨慎使用! 方案二 select id from A order by id between 90000 and 90010; 复制代码 2.利用limit 1 、top 1 取得一行 有些业务逻辑进行查询操作时(特别是在根据某一字段DESC,取最大一笔).可以使用limit 1 或者 top 1 来终止[数据库索引]继续扫描整个表或索引。 反例 SELECT id FROM A LIKE 'abc%' 复制代码 正例 SELECT id FROM A LIKE 'abc%' limit 1 复制代码 3. 任何情况都不要用

企业上云如何优化性能?

会有一股神秘感。 提交于 2020-01-07 18:47:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 应用系统上线运行后,随着系统数据量的不断增长、访问量的不断上升,系统的响应速度通常会越来越慢,尤其日常峰值情况下常不能满足业务需要,甚至出现应用服务中断的现象,给企业造成巨大的品牌损失和经济损失。大量数据表明,每0.1秒的核心体验响应时间延长会导致1%的营收下降。企业应用系统上云,如何在云端利用云的优势进行性能优化,是一个值得深入分析的重点问题。 性能优化的价值与策略 1、性能优化价值 性能是一个应用系统最重要的指标,除非没有选择,否则没有用户会忍受一个响应缓慢的应用系统或网站。大量数据表明,每0.1秒的核心体验响应时间延长会导致1%的营收下降。 应用系统上线运行后,随着系统数据量的不断增长、访问量的不断上升,系统的响应速度通常会越来越慢,尤其峰值情况下常不能满足业务需要,甚至出现应用服务中断,给企业造成巨大的品牌损失和经济损失,因此性能优化会显得至关重要。 通过性能优化,可以用更少的硬件资源,支撑更大量的业务发展,从而达到节省硬件成本的目的;同时,可以在有限资源的情况下,提升系统的响应能力,为用户带来更好的使用体验,促进业务增长。 2、性能优化策略 对于应用系统来说,用户从浏览器发出请求到数据库完成事务操作,中间需要经过很多环节,如果系统响应慢,必须对请求经过的各个环节进行分析,排查可能出现性能瓶颈的地方

Java性能优化——操作系统性能监控

巧了我就是萌 提交于 2020-01-07 17:49:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.CPU使用率 总述 CPU使用率可以分为 用户态CPU使用率 和 系统态CPU使用率 。 用户态CPU使用率 :应用程序代码所执行的时间占CPU总执行时间的百分比。 系统态CPU使用率 :应用程序调用操作系统代码所执行的时间占CPU总时间的百分比。如果较高,说明有共享资源的竞争或者大量IO交互操作。 减少系统态CPU使用率,将CPU更多的执行时间分配到应用程序本身,可以提高应用性能。 PS:要提升性能,除了CPU使用率,还要监控单位时间内执行的指令数、每条执行所需的周期等,防止等待状态也被当成了高效执行。 Windows监控CPU使用率 使用任务管理器进行监控。 左上角是CPU使用率总和,右上角是每个CPU的使用率,绿色代表每个CPU使用率,红色代表每个CPU的系统态使用率,前后两者的差代表用户态使用率。 2.CPU调度程序运行队列 总述 CPU调度程序运行队列就是那些已经准备好运行、正在等待可用CPU来执行他们的线程。 虚拟处理器个数 = Runtime.getRuntime().availableProcessors() 当队列长度达到虚拟处理器个数的3-4倍时,就需要注意或者进行优化了。 对于上述情况有两种解决措施: 增加CPU 对应用程序的算法进行优化来改进CPU使用率。如减少垃圾回收的频率

性能优化-场景分块

妖精的绣舞 提交于 2020-01-07 15:44:58
版本记录 日期 版本 说明 作者 2020-1-2 0.1 文档初始版本 李俊 目的 加速场景加载,减少loading时间 提升场景渲染效率 概念 动态合批 接口 public void CombineMeshes(CombineInstance[] combine, bool mergeSubMeshes, bool useMatrices); 核心代码 foreach (var subItem in itemValue) { CombineInstance combine = new CombineInstance(); ReanderData matReanderData = subItem.Value; combine.mesh = matReanderData._MeshFilter.sharedMesh; combine.transform = matReanderData._MeshFilter.transform.localToWorldMatrix; combines[index] = combine; index++; if (combineData == null) { combineData = matReanderData; } delList.Add(matReanderData._MeshFilter.gameObject); if(maxValue

性能优化-ui rebuild

放肆的年华 提交于 2020-01-07 15:43:44
版本记录 日期 版本 说明 作者 2019-11-25 0.1 文档初始版本 李俊 原理 rebuild过程 正确算出来 canvasrenderer mesh, material Graphic rebuild Graphic ugui中显示的基类 Image 图片 Text 文字 /*--> */ /*--> */ /*--> */ /*--> */ RectTransform.widthGraphic.OnRectTransformDimensionsChangeGraphic.SetVerticesDirtyCanvasUpdateRegistry.RegisterCanvasElementForGraphicRebuildCanvasUpdateRegistry.PerformUpdateGraphic.RebuildGraphic.UpdateGeometry&UpdateMaterialcanvasRenderer.SetMesh&SetMaterial&SetTexturegraph TB A[RectTransform.width] B[Graphic.OnRectTransformDimensionsChange] C[Graphic.SetVerticesDirty] D[CanvasUpdateRegistry

web项目性能优化(整理)

China☆狼群 提交于 2020-01-07 12:45:03
1、压缩源码和图片 JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可以使用一些开源压缩软件来压缩,比如24色变成8色、去掉一些PNG格式信息等。 2、选择合适的图片格式 如果图片颜色数较多就使用JPG格式,如果图片颜色数较少就使用PNG格式,如果能够通过服务器端判断浏览器支持WebP,那么就使用WebP格式和SVG格式。 3、合并静态资源 包括CSS、JavaScript和小图片,减少HTTP请求。有很大一部分用户访问会因为这一条而取得最大受益 4、开启服务器端的Gzip压缩 这对文本资源非常有效,对图片资源则没那么大的压缩比率。 5、使用CDN 或者一些公开库使用第三方提供的静态资源地址(比如jQuery、normalize.css)。一方面增加并发下载量,另一方面能够和其他网站共享缓存。 6、延长静态资源缓存时间 这样,频繁访问网站的访客就能够更快地访问。不过,这里要通过修改文件名的方式,确保在资源更新的时候,用户会拉取到最新的内容。 7、把CSS放在页面头部,把JavaScript放在页面底部 这样就不会阻塞页面渲染,让页面出现长时间的空白。 来者若有新的优化技能,请别吝啬,留下你宝贵的见解。 来源: https://www.cnblogs.com/ZXH-null/p