
性能调优
文章平均质量分 84
liu1002880404
这个作者很懒,什么都没留下…
展开
-
G1垃圾回收器
G1垃圾回收器介绍G1垃圾回收器是一款主要面向服务端应用的垃圾收集器。作为垃圾回收器技术发展史上里程碑的成果,G1垃圾回收器不同于以往的垃圾回收器,首先是思想上的转变G1对于Java堆的划分G1垃圾回收器对于Java堆区域的划分不同于以往我们对Java对区域划分的认知以往对于Java堆区域的划分为:新生代和老年代,新生代又划分为 Eden区和 Survivor区,Survivor区又分为 from区和 to区。但是现在,G1不再坚持固定大小以及固定数量的分代区域划分,而是把连续的Java堆空间划分原创 2022-03-26 07:27:52 · 940 阅读 · 0 评论 -
GC调优详细说明
1. GC调优重要参数生产环境推荐开启-XX:+HeapDumpOnOutOfMemoryError输出内存溢出文件-XX:HeapDumpPath=D:/oomDump/dump.hprof内存溢出文件保存位置,此文件用于MAT分析当然,一般Linux服务器可以设置为 ./java_pid.hprof 默认为Java进程启动位置调优之前开始,调优之后关闭-XX:+PrintGC 调试跟踪之 打印简单的 GC 信息参数:-XX:+PrintGCDetails和-XX:+PrintGCTim原创 2022-03-26 07:20:55 · 669 阅读 · 0 评论 -
容易内存泄露的几种情况
程序在申请内存后,无法释放已申请的内存空间,导致这一部分的原因主要是代码写的不合理,比如以下几种情况。1. 长生命周期的对象持有短生命周期对象的引用例如将 ArrayList 设置为静态变量,然后不断地向ArrayList中添加对象,则 ArrayList 容器中的对象在程序结束之前将不能被释放,从而造成内存泄漏。2. 连接未关闭如数据库连接、网络连接和 IO 连接等,只有连接被关闭后,垃圾回收器才会回收对应的对象。3. 变量作用域不合理例如:一个变量的定义的作用范围大于其使用范围。如果没有原创 2022-03-26 07:11:34 · 979 阅读 · 0 评论 -
查询优化:子查询优化~排序优化~分组优化~分页优化
文章目录1. 子查询优化2. 排序(order by)优化3. 分组(group by)优化4. 分页查询(limit)优化1. 子查询优化MySQL从4.1版本开始支持子查询,使用子查询可以进行SELECT语句的嵌套查询,即一个SELECT查询的结 果作为另一个SELECT语句的条件。子查询可以一次性完成很多逻辑上需要多个步骤才能完成的SQL操作 。 子查询是 MySQL 的一项重要的功能,可以帮助我们通过一个 SQL 语句实现比较复杂的查询。但是,子 查询的执行效率不高。原因:执行子查询时,M原创 2022-03-25 22:10:57 · 795 阅读 · 0 评论 -
mysql执行计划
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。explain执行计划包含的信息id表格查询的顺序编号。降序查看,id相同的从上到下查查看。id可以为null ,当table为( union ,m,n )类型的时候,id为null,这个时候,id的顺序为 m跟n的后面。select_type查询的方式下文详细说明。table表格名称表名,别名,(原创 2022-03-23 10:30:44 · 862 阅读 · 0 评论 -
分布式架构
分布式架构设计的核心理念是“并行拆分与横向扩展”,即按照一定维度将系统进行拆分,系统各部分松耦合并行运行,并建立起较为完善的横向扩展与容错恢复机制。分布式架构具备了多方面的优势:一是,系统扩展能力较强,可基于通用硬件扩展计算和存储能力来提升系统处理能力,满足业务不断增长的需求。二是,系统运行效率较高,在对系统各环节合理拆分的基础上,通过并行处理进一步突破传统串行处理存在的效率瓶颈。三是,系统运行可靠性较好,将系统拆分后并行运行在多台相同的设备上,即使单一设备出现故障,整个系统仍可正常运转或仅局部受损原创 2022-03-16 09:12:49 · 810 阅读 · 0 评论 -
一篇弄懂ArrayList
文章目录ArrayList 简介Arraylist 和 Vector 的区别Arraylist 与 LinkedList 区别ArrayList 的构造函数ArrayList 扩容机制ensureCapacity()方法ArrayList 简介ArrayList 的底层是数组,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList 继承于原创 2022-03-14 11:44:43 · 166 阅读 · 0 评论 -
Java性能优化
复用优化在写代码的时候,你会发现有很多重复的代码可以提取出来,做成公共的方法。这样,在下次用的时候,就不用再费劲写一遍了。这种思想就是复用。上面的描述是编码逻辑上的优化,对于数据存取来说,有同样的复用情况。无论是在生活中还是编码中,重复的事情一直在发生,如果没有复用,工作和生活就会比较累。在软件系统中,谈到数据复用,我们首先想到的就是缓冲和缓存。缓冲(Buffer),常见于对数据的暂存,然后批量传输或者写入。多使用顺序方式,用来缓解不同设备之间频繁地、缓慢地随机写,缓冲主要针对的是写操作。缓存(C原创 2022-03-13 15:39:57 · 1628 阅读 · 0 评论 -
Mysql join不使用索引
【问题场景】有个30多行的大SQL执行效率特别慢,问题集中在一个子查询上,开始没有建索引,可是发现索引都创建了,还是不走索引ql语句描述:有三张表需要关联查询,关联关系如下A表B表 关联 A.col = B.idC表 关联 B.col = C.id问题出在 B表 关联 A.col = B.id,为啥?执行计划就是不走id主键,C表 关联 B.col = C.id都可以正常走【解决思路】1、尝试单表查询,验证索引是否正常 试了一下单表查询B是可以走主键索引,正常,排出索引问题2、尝试优化SQ原创 2022-02-23 10:43:48 · 3377 阅读 · 0 评论 -
SpringBoot 性能优化
1.服务监控在开始对SpringBoot服务进行性能优化之前,我们需要做一些准备,把SpringBoot服务的一些数据暴露出来。比如,你的服务用到了缓存,就需要把缓存命中率这些数据进行收集;用到了数据库连接池,就需要把连接池的参数给暴露出来。我们这里采用的监控工具是Prometheus,它是一个是时序数据库,能够存储我们的指标。SpringBoot可以非常方便的接入到Prometheus中。创建一个SpringBoot项目后,首先,加入maven依赖。 org.springframewo原创 2022-02-16 09:47:17 · 6933 阅读 · 2 评论 -
性能调优之JVM调优(四)GC性能指标及调优实战
什么是jvm调优调优简单说就是把整个系统进行优化:根据需求进行JVM规划和预调优,比如为程序设置合适的内存、选择合适的垃圾回收器等当程序出现慢或者卡顿现象时,优化JVM运行环境解决JVM运行中出现的各种问题,比如OOMGC性能指标吞吐量: 工作线程运行时间占比总运行时间之比用户程序执行时间/(用户程序执行时间+垃圾回收时间)单位时间内,STW 的时间最短 (发生2次STW,0.2+0.2=0.4),垃圾回收时间占比最低,这样就称吞吐量高.业务场景:比如科学计算就要求吞吐量优先。垃圾回原创 2022-01-06 14:00:28 · 4787 阅读 · 0 评论 -
性能调优之JVM调优(三)JVM 常见参数总结
这篇主要讲CMS的日志格式、G1的日志格式、常用参数 、纤程 学习过程中用到的一些知识。CMS日志分析首先启动linux 然后执行 命令java -Xms20M -Xmx20M -XX:+printGCDetails -XX:+UserConcMarkSweepGC com.study.jvm.gc.GcTestXms :堆大小PrintGCDetails :打印GC的详细信息UserConcMarkSweepGC:启动CMS看项目年轻代回收的日志信息,刚开始是YGC ,是ParNew 这个垃原创 2022-01-04 11:36:46 · 319 阅读 · 0 评论 -
性能调优之JVM调优(二)常见的垃圾回收器
知识回顾:垃圾回收算法主要讲述了判断对象的生死?两种基础判断对象生死的算法、引用计数法、可达性分析算法,方法区的回收。2.介绍了垃圾回收的几种常用算法:标记-清除、复制算法、标记-整理算法、分代收集算法。那么接下来我们重点研究Jvm的垃圾收集器(serial收集器、parnew收集器、parallel scavenge收集器、serial old 收集器、parallel old收集器、cms收集器、g1收集器)。正式进入前先看下图解HotSpot虚拟机所包含的收集器:图中展示了7种作用于不同分代原创 2022-01-04 11:30:01 · 265 阅读 · 0 评论 -
性能调优之JVM调优(一)
JVM 调优JVM 调优必备理论知识-Gc COLLECTOR-三色标记存活性分析(怎么找到垃圾):1.Reference Count引用计数对象被引用,计数器加一,如果数值减到0,就判断这个对象是垃圾,可以被回收。Objective-C使用这种方式2.Root Searching根可达算法如果A,B,C相互引用,按引用计数都是1,不是垃圾,不会被回收。但没有其他对象引用这3个对象,在java中是可被回收的垃圾根可达算法:简单地说,如果可以从任何一个已经定义的变量开始,直接或者通过其他对象的引原创 2021-12-31 14:48:47 · 564 阅读 · 0 评论