自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Mysql-性能分析-InnoDB统计数据

总结INFORMATION_SCHEMA的输出。INNODB_BUFFER_PAGE表,按模式聚合select * from sys.`x$innodb_buffer_stats_by_schema`总结INFORMATION_SCHEMA的输出。INNODB_BUFFER_PAGE表,根据模式和表名进行聚合select * from sys.`x$innodb_buffer_stats_by_table`...

2021-01-07 15:51:25 232

原创 Mysql-性能分析-内存使用情况

显示分配的总内存select * from sys.`x$memory_global_total`显示消耗最多内存的事件select * from sys.`x$memory_global_by_current_bytes`显示用户消耗最多的内存select * from sys.`x$memory_by_user_by_current_bytes`显示占用内存最多的客户端select * from sys.`x$memory_by_host_by_current_bytes`

2021-01-07 15:46:35 510

原创 Mysql-性能分析-语句开销相关

列出具有各种聚合统计信息的语句:select * from sys.`x$statement_analysis`列出所有平均运行时(以微秒计)在最高5%以内的语句select * from sys.`x$statements_with_runtimes_in_95th_percentile`列出所有使用临时表的语句——访问最高的磁盘临时表,然后访问内存临时表select * from sys.`statements_with_temp_tables`列出所有做过排序的规范化语句,按以

2021-01-07 15:43:17 322

原创 JVM调优-大对象分配

每当应用程序使用G1收集算法时,GC时对大对象的分配可能会影响应用程序的性能(强调:大对象分配是指大于region大小的50%对象的分配)。频繁地大对象分配会引发一下GC性能问题:如果region当中包含大对象,剩余regiong空间将不再被使用,如果对象只是刚刚超过region的50%多一点,那么就会造成很大的空间浪费。 对于大对象的收集,G1并不像常规那样处理,JAVA1.8u40之前,大对象的回收只能在Full GC事件期间完成,Hotspot JVM 最新版本会在清除阶段标记周期结束时释放

2021-01-01 17:09:12 2658

原创 JVM调优-JVMTI tagging & GC

当应用程序与JAVA代理(-javaagent)一起运行时,代理旧有可能使用JVMTI标记堆中的对象。代理可以出于各种原因使用JVMTI进行对象标记,但是如果标记大量的对象,那么GC的性能就会收到影响,从而影响到应用程序的性能。这个问题存在于本地代码中,其中JvmtiTagMap::do_weak_oops在每个垃圾收集事件期间遍历所有JVMTI标记的对象,并对所有JVMTI标记的对象执行开销不大的操作。更糟糕的是这个操作是顺序执行的不是并行的。当存在大量的JVMTI标记对象时,这意味着GC过程大部

2021-01-01 17:07:48 164

原创 JVM调优-RMI & GC

当你应用程序通过RMI发布消息或消费服务时,JVM会定期启动Full GC,确保本地未使用的对象也不会占用内存空间,即使没有在代码逻辑当中添加任何基于JMI的内容,第三方库或工具类仍然可以打开RMI端点(常见的就是JMX),如果远程连接到它,它就会使用RMI在底层发布数据。RMI造成的问题通常是Old Generation剩有大量空间,但是会触发Full GC,造成stop-the-world。删除远程引用对象的行为是通过System.gc()触发的,调用System.gc()在sun.rmi.tr

2021-01-01 17:06:50 661 1

原创 JVM调优-软、弱、虚、引用对象

影响GC的另一类问题是非强引用(软弱虚引用对象)的使用有关,虽然在许多情况下可能有助于避免不必要的OutOfMemoryError,但是大量使用这样的引用会影响垃圾收集的行为方式,影响应用程序的性能。在使用弱引用时,应该知道弱引用进行垃圾收集的方式。每当GC发现一个对象是弱可达对象时(也就是说对该对象的最后一个引用是弱引用),该弱可达对象就会放到相应的ReferenceQueue上成为符合结束条件的对象。然后轮询这个引用队列并执行相关的清理活动。这种清除的一个典型例子是从缓存中删除现在丢失的键。解决

2021-01-01 17:05:05 146

原创 JVM分配速率-过早的晋升

在解释过早地晋升的概念之前,我们先熟悉下晋升率(promotion rate):晋升率是在单位时间内将从Young Generation的对象数据传播到Old Generation对象的数量来衡量的,晋升率通常以(MB/sec)为单位。将在Young Generation长期存活的对象晋升到Old Generation是我们期望的行为。我们假设一种情况,不仅长期存活的对象存在Old Generation,没有在Young Generation没有达到预期寿命的对象也晋升到了老年代当中(这种成为过早提升)

2021-01-01 17:00:52 590

原创 GC调优-分配速率

2021-01-01 16:55:24 128

原创 GC调优基础

GC调优过程: 1、列出性能目标 2、运行测试代码 3、测量结果 4、将结果与性能目标相对比 5、如果没达到性能目标,则重新修改执行测试。性能目标分类: Latency、Throughput、Capacity(基础设施成本限制:例如设备资源都是有限的,不可能任意添加)【JVM】吞吐量与延迟关系:堆内存增大,gc一次能处理的垃圾对象增大,吞吐量增大,但gc一次的时间会延长,导致后面排队的线程等待时间延长。内存堆减小,g...

2020-12-31 16:46:20 109

原创 G1 – Garbage First

G1在 JDK7u4以上都可以使用,在JDK9开始,G1为默认的垃圾收集器,以替代CMS。扩展阅读(https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc.html)Collection Set:CSet是指一组可被回收的regions的集合。CSet涵盖的regions会在GC的过程中被异动到另一个regions。CSet中的regions可以来自Eden、Survivor、old。CSet会占用不到整个

2020-12-31 16:43:36 124

原创 Concurrent Mark and Sweep

Concurrent Mark and Sweep优点:大量的工作听过并发线程处理,不需要stop-the-world缺点:老年代碎片多且在某些情况下暂停时间不可预测,特别是大型堆栈。启用参数: -XX:+UseConcMarkSweepGC主要目的是: 减少GC时间,因为要抢占多大多数的cpu时间或全部cpu时间,所以应用的吞吐量相对于在Parallel GC会小。并发标记清除算法:在Young Generation使用的是并行mark-copy且stop-the-...

2020-12-31 16:36:20 783

原创 Parallel GC

Parallel GC并行垃圾收集器:在young generation使用mark-copy,在Old Generation使用mark-sweep-compact;且在Young Generation和Old Generation 都会stop-the-world;收集器都使用多线程进行标记-复制和标记-压缩。-XX:ParallelGCThreads=0 —指定并行垃圾收集器执行的线程数量;默认为所在机器的逻辑核数;当逻辑核数超过8时计算公式为: ...

2020-12-31 16:27:30 1372

原创 Serial GC

Serial GC:串行垃圾收集器:在Young Generation使用mark-copy,在Old Generation使用mark-sweep-compact,并且都是单线程收集器;都会触发stop-the-world。 只需要单个参数设置java -XX:+UseSerialGC com.mypackages.MyExecutableClass 垃圾收集器使用:young 是 mark-copy;tenured是mark-sweep-compact 会引发stop-th...

2020-12-31 16:24:46 774

原创 打印GC信息使用到的参数:

打印GC信息使用到的参数:-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps

2020-12-31 16:20:58 153

原创 GC触发原因

GC触发条件:GCLocker Initiated GC、Allocation Failure、Metadata GC Threshold

2020-12-31 16:19:18 1096

原创 JVM默认选项

Java8 默认使用:-XX:+UseParalleGC -XX:+UseParallelOldGCJava9 默认使用:G1

2020-12-31 16:15:49 77

原创 JVM关键词解析

标记(mark):找出所有活着的对象stop the world:既不取决于堆的大小,也不取决于对象的总数大小,而是取决于活着对象的数量。移除未使用对象:清除、压缩、复制。

2020-12-31 16:14:42 103 1

原创 从GC roots标记可达对象:

从GC roots标记可达对象:执行方法的输入参数和局部变量活动的线程静态变量JNI引用对象扩展阅读https://www.cnblogs.com/kabi/p/6531375.html

2020-12-31 16:12:41 108

原创 精神食粮

《可以练习》:因此,我们在这里简单地总结有目的的练习:走出你的舒适区,但要以专注的方式制订明确的目标,为达到那些目标制订一个计划,并且想出监测你的进步的方法。哦,还要想办法保持你的动机。对想要提高自己的每个人来讲,这些是让你有一个卓越开端的秘诀——但依然只是开始。《学习之道》:合上书,不要偷看,想想本章有哪些主要思想?刚刚开始尝试时,如果复述不完整也没关系。只要持续练习这一技巧,总有一天,你会发现自己阅读和回顾的能力已经脱胎换骨。1.我会觉得阅读比听别人讲更好理解,所以我从来都会读教材。我会先快

2020-12-23 11:41:06 97

原创 Jenkins自动化部署相关

shell:cd /usr/local/docker/jenkins/lib/tt-auth/tt-auth-server/targetmv tt-auth-server.jar ../cd ..docker build -t tt/auth-server .docker tag tt/auth-server 10.211.55.3/tt/tt-serverdocker push 10.211.55.3/auth-servercd /usr/local/docker/jenkin

2020-12-23 11:32:22 46

转载 Mac下Idea点debug卡的解决办法

Mac下Idea点debug卡的解决办法欢迎使用Markdown编辑器欢迎使用Markdown编辑器在Mac平台,使用Idea对项目进行Debug总是卡顿几秒或者十几秒,解决办法:修改host文件:sudo vim /private/etc/hosts将127.0.0.1 localhost修改为:127.0.0.1 localhost [hos...

2019-04-17 10:06:11 253

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除