自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (4)
  • 收藏
  • 关注

原创 jstack找出占用cpu最高的线程堆栈信息

1 package com.tuling.jvm; 23 /** 4 * 运行此代码,cpu会飙高 5 */ 6 public class Math { 78 public static final int initData = 666; 9 public static User user = new User(); 1011 public int compute() { //一个方法对应一块栈帧内存区域 12 int a = 1; 13 int b = 2;

2021-09-29 12:39:14 340

原创 三色标记算法和浮动垃圾

三色标记在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。 这里我们引入“三色标记”来给大家解释下,把Gcroots可达性分析遍历对象过程中遇到的对象, 按照“是否访问过”这个条件标记成以 下三种颜色:黑色: 表示对象已经被垃圾收集器访问过, 且这个对象的所有引用都已经扫描过。 黑色的对象代表已经扫描 过, 它是安全存活的, 如果有其他对象引用指向了黑色对象, 无须重新扫描一遍。 黑色对象不可能直接(不经过 灰色对象) 指向某个白

2021-09-28 13:30:17 497

原创 如何选择垃圾收集器

3G以下用Parallel收集器,3到8G用CMS,8G以上有G1,超级大堆用ZGC。

2021-09-27 14:33:30 140

原创 如何判断一个类是无用的类

如何判断一个类是无用的类 方法区主要回收的是无用的类,那么如何判断一个类是无用的类的呢? 类需要同时满足下面3个条件才能算是 “无用的类” : 该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。 加载该类的 ClassLoader 已经被回收。 该类对应的 java.lang.Class 对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。...

2021-09-26 14:29:06 296

原创 对象内存分配

对象栈上分配 我们通过JVM内存分配可以知道JAVA中的对象都是在堆上进行分配,当对象没有被引用的时候,需要依靠GC进行回收内 存,如果对象数量较多的时候,会给GC带来较大压力,也间接影响了应用的性能。为了减少临时对象在堆内分配的数量,JVM通过逃逸分析确定该对象不会被外部访问。如果不会逃逸可以将该对象在栈上分配内存,这样该对象所占用的 内存空间就可以随栈帧出栈而销毁,就减轻了垃圾回收的压力。 对象逃逸分析:就是分析对象动态作用域,当一个对象在方法中被定义后,它可能被外部方法所...

2021-09-26 13:50:30 576

原创 java指针压缩

什么是java对象的指针压缩? 1.jdk1.6 update14开始,在64bit操作系统中,JVM支持指针压缩 2.jvm配置参数:UseCompressedOops,compressed­­压缩、oop(ordinary object pointer)­­对象指针 3.启用指针压缩:­XX:+UseCompressedOops(默认开启),禁止指针压缩:­XX:­UseCompressedOops 为什么要进行指针压缩? 1.在64位平台的HotSpot中使用32位指针,内存使用会

2021-09-26 13:04:49 1099

原创 java对象头中的类型信息

java对象头中的类型信息先指向元空间(方法区)内的类元信息(C++实现),然后类元信息再指向堆区内的class对象信息。

2021-09-25 23:50:36 179

原创 jvm调优之元空间

2021-09-25 23:36:58 304

原创 jvm相关

注意下图中的执行引擎相关的线:

2021-09-25 23:27:37 85

转载 查看mysql数据库容量大小

第一种情况:查询所有数据库的总大小,方法如下:mysql> use information_schema;mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES;+-----------+| data |+-----------+| 3052.76MB |+-----------+1 row in set (0.02 sec)统计一下所有库数...

2021-09-23 14:08:42 14203

原创 mysql原理三:mysql引擎InnoDB内存和磁盘架构

mysql的InnoDB引擎的内存和磁盘架构如下图所示:内存区域中,有缓存池Buffer Pool,其结构如下图所示:free链表为空闲链表,保存了buffer pool中的空闲的内存空间,一个控制块对应于一个空白块,大小为一个也的大小,默认为16kb。...

2021-09-15 13:34:54 348

原创 mysql原理二:联合索引

联合索引属于辅助索引。假如有下图的数据,其中a列是主键:如果要创建一个联合索引(b,c,d),那么索引结构类似下图:注意,上图中,叶子节点也存了全部数据,这个结构图示以b,c,d为联合索引建立的,所谓联合索引就是将b,c,d的值连起来以后做排序。需要注意的是,上图中的结构并不是真正的mysql中的结构图,而是类似,在上边的描述中,也用了加粗标红的类似两个字来标注。这里说类似,是因为真正的辅助索引叶子节点不会存全部数据,如果存全部数据,首先占用空间很大,而且数据更新时,辅助索引树也需要..

2021-09-13 14:57:30 282

原创 mysql原理一:innodb存储基本单位页结构及B+tree

页结果如下:其中的页目录是为了提高查找用户数据区域的效率。页中存在指针指向上一页和下一页。页目录(页目录的查找是用二分查找算法)和用户数据区域的数据都是有序的。每个也大小默认为16kb。当页很多时,比如下图所示指向select * from t1 where id= 6000;需要遍历页链表,效率很慢,再加上页是从硬盘读出来的,那效率就更慢了。为了提高效率,像位用户数据区加页目录这种方式,为所有页加一个索引页(大小也是16kb),其中所存数据为每一页的最小id。那么,这样的机构就是...

2021-09-13 14:15:37 348

原创 亿级电商网站JVM调优案例

每日用户点击量上亿次,用户平均点击20-30次,日活用户500万,最终付费下单用户10%,日均50万单,如果不做促销活动,这50万单大概在3到4个小时内完成,每秒平均35单左右,这个可以接受。但在促销场景下,如果每秒1000单,用3台服务器做负载均衡,每台服务器每秒300单,每台服务器上每秒产生的对象(1KB的订单对象以及关联的对象及查询业务的对象)大概为60M。假设JVM的参数设置为堆大小为3G,年轻代占3分之一为1G,其中eden区占800M,S0和S1占100M。这种情况下,...

2021-09-12 10:04:13 166

转载 指针碰撞和空闲列表

虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指

2021-09-11 18:06:41 170

原创 redission分布式锁续期流程

2021-09-11 16:57:59 624

转载 亿级流量电商网站中台微服务架构

2021-09-10 14:25:58 488 1

原创 nacos架构图

官方架构图:组件分析:

2021-09-09 13:45:17 1021

原创 Oracle 利用系统表 user_segments 查询表的存储空间

在 Oracle 中可以利用系统表 user_segments 查询表的存储空间占用大小。select segment_name as table_name, -- 表名 segment_type, -- 表类型 bytes, -- 实际大小 round(bytes/1024/1024, 2) -- 以M为单位 from user_segments where segment_name = 'table_name';...

2021-09-09 10:11:25 2270

原创 GC日志中的三个时间

2021-09-08 13:30:08 198

原创 GC的分类

哪些情况下会触发Full GC

2021-09-08 13:14:41 418 1

转载 Oracle RAC环境下vip/public/private IP的区别

在Oracle RAC环境下,每个节点都会有多个IP地址,分别为Public/Private/Vip,这三个IP到底有啥区别呢?分别用在那些场合呢?来看看老外的回答。1. private IP address is used only for internal clustering processing (Cache Fusion)私有IP用于心跳同步,这个对于用户层面,可以直接忽略,简单理解,这个Ip用来保证两台服务器同步数据用的私网IP。2. VIP is used by database app

2021-09-07 14:13:19 2178

转载 数据库集群方案及Oracle RAC架构分析

应对业务量的不断增加场景通常有两个大方向,一种是纵向扩展,也就是增加单台服务器的CPU计算能力、内存容量和磁盘承载能力等;另外一种是横向扩展,也就是通过增加服务器的数量来增加处理能力。前者存在业务中断和扩展上限等诸多的问题,特别是互联网业务的迅猛发展,单台服务器几乎无法满足业务负载要求,因此目前比较流行的方式横向扩展的方式。1.数据库集群数据库的横向扩展是通过数据库集群实现的。数据库集群也有两种主要形式,一种是主备(主从)架构,也就是只有一台服务器上的数据库可以访问,另一个(多个)服务器上数据库不.

2021-09-07 14:05:24 2297

全文检索详细设计文档.docx

基于elasticSearch做的全文检索,这是详细设计文档。包括结构化数据的检索,非结构化数据(文档类,如word,pdf等)检索。结构化数据,基于logstash导入。非结构化(文档),可以通过接口,本地扫描/远程扫描进入ES。

2020-03-17

JAVA核心知识点整理.rar

JAVA核心知识点整理,针对java体系的一个核心知识点的总结,比较详细和有深度,可以提高和完善自己的能力,对求职面试也有很大的帮助。

2020-01-03

java记事本程序源码

这是一套用java语言开发的记事本程序源码,功能很完善,没有bug。

2011-01-13

空空如也

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

TA关注的人

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