- 博客(17)
- 资源 (5)
- 收藏
- 关注
原创 线程池动态修改核心线程数
通过线程池的方法重新设置核心线程数setCorePoolSize当最新的核心线程数小于之前的核心线程数时,则需要进行多余的线程中断当最新的核心线程数大于之前的核心线程数,则需要逐步的增加核心线程数源码如下: public void setCorePoolSize(int corePoolSize) { if (corePoolSize < 0) throw new IllegalArgumentException(); int.
2020-05-29 14:00:28 2431
原创 kafaka 发送消息与Gc优化
kafaka发送端不断的存储消息,批量、压缩发送;但是为啥发送端没有发生太多的FullGc因为消息存储的是使用BufferPool,一个缓存池来存放消息;存储的时候申请内存,发送完则释放缓存池;以达到共用的目的。这样就不会产生垃圾...
2020-05-28 16:03:23 167
原创 Kafka 发送消息流程
客户端的几个组件:KafkaProducer KafkaProducer 是一个生产者客户端的进程,通过该对象启动生产者来发送消息 RecordAccumulator 记录收集器,收集发送的消息缓存到客户端 Sender 读取缓存,进行一些必要的转换 批量传到selector Selector 传送消息到broker一条消息首先需要确定要被存储到那个 partition 对...
2020-05-26 11:18:06 578
原创 G1垃圾回收器步骤
4443.554: [GC pause (G1 Evacuation Pause) (young), 0.0061966 secs] [Parallel Time: 4.2 ms, GC Workers: 8] [GC Worker Start (ms): Min: 4443554.1, Avg: 4443554.2, Max: 4443554.2, Diff: 0.1] [Ext Root Scanning (ms): Min: 1.1, Avg: 1.2, Max: 1..
2020-05-22 18:51:51 969
原创 CMS GC的步骤
初始化标记---》 1. 标记老年代中所有的GC Roots对象,如下图节点1;2. 标记年轻代中活着的对象引用到的老年代的对象 并发标记 1、从“初始标记”阶段标记的对象开始找出所有存活的对象;2、并发标记阶段只负责将引用发生改变的Card标记为Dirty状态,不负责处理 预清理阶段 用来处理前一个阶段因为引用关系改变导致没有标记到的存活对象的,它会扫描所有标记为Direty的Card 可终止的预处理 这个阶段尝试着去...
2020-05-22 15:34:05 959
原创 synchronized 锁升级之后,怎么降级
synchronized java规定锁升级之后,则无法锁降级;升级之后,如果系统的并发下来了,无疑降低了处理速度我们可以进行一段时间进行统计,统计并发度已经很低,如果还是重量级锁,则进行锁对象的切换。换一个锁对象,这样又开始偏向锁状态,提升了处理速度;锁对象切换时候,需要注意并发操作;怎么获取当前锁对象是否处于重量级锁状态 <dependency> <groupId>org.openjdk.jol</groupId> .
2020-05-21 17:26:25 3826 2
原创 java完全把内存回收的权限给了虚拟机
为啥不能半自动化垃圾回收DirectByteBuffer 的内存回收机制,采用了启动线程自己控制回收内存,而非垃圾回收器绝对决定怎么去回收,程序无法感知堆内内存,怎么做到半控制回收内存?这样可以减少youngGc的时长,因为现在的内存越来越大,太大的时候回收垃圾时长会越来越长分代回收策略也是要回收所有的新生代,如果新生代越大就会回收越来越慢...
2020-05-21 14:26:07 79
原创 JVM youngGc FullGc的触发条件
youngGc触发条件大多数情况下,对象直接在年轻代中的Eden区进行分配,如果Eden区域没有足够的空间,那么就会触发YGC(Minor GC)进入老年代的途径 YGC时,To Survivor区不足以存放存活的对象,对象会直接进入到老年代。 经过多次YGC后,如果存活对象的年龄达到了设定阈值,则会晋升到老年代中。 动态年龄判定规则,To Survivor区中相同年龄的对象,如果其大小之和占到了 To Survivor区一半以上的空间,那么大于此年龄的对象会直接进入老年代,而不
2020-05-21 11:40:19 4495
原创 HttpClient 引发的线程太多,导致FullGc
CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(connectionManager) .setMaxConnTotal(400) .setMaxConnPerRoute(150) .evictExpiredConnections() .build();evictExpiredConnections 这个配置作用:设..
2020-05-21 11:03:15 924
原创 位图法排序(给一堆整数排序)
第一阶段:将所有的位都置为0,从而将集合初始化为空。第二阶段:通过读入文件中的每个整数来建立集合,将每个对应的位置都置为1。第三阶段:检验每一位,如果该为为1,就输出对应的整数,有此产生有序的输出文件。...
2020-05-20 16:49:01 180
原创 canal HA模式配置
机器a. 运行canal的机器: 10.20.144.22 , 10.20.144.51.b. zookeeper地址为10.20.144.51:2181c. mysql地址:10.20.144.15:3306修改配置 canal.properties,加上zookeeper配置canal.zkServers=10.20.144.51:2181 canal.instance.global.spring.xml = classpath:spring/default-i...
2020-05-20 11:22:18 148
原创 高可用延迟消息的设计
时间轮算法剖析;采用一个循环的槽列表作为主要的存储结构,每个槽对应一个列表(存放此刻应该被执行的命令集合),然后另起一个任务每隔一段时间对槽的当前位置进行变换(或者根据时间的推移当前位置进行变更) 如果列表存储的数据太大,可以将每个列表映射到redis的一个list 如果延迟的时间跨度太大,比如一个星期、一个月等;这样需要的list太多,占用的内存太大将数据(需要触发的事件)按触发时间分散存储在多个文件中启动一个任务,只将最近半小时的事件放入内存,以达到节省内存的目的延...
2020-05-19 11:11:48 243
原创 设计一个本地缓存考虑点
存储缓存的数据结构 可以使用hashMap、 压缩表、双向链表、hashtable等 缓存最大内存使用大小,过量后清除策略 LRU LFU 过期时间设置 过期时间存储在键值对象属性里面 怎么清除过期的缓存 定期删除和惰性删除 是否持久化 线程安全 ConcurrentHashMap SynchronizedCache 阻塞机...
2020-05-19 09:52:12 123
原创 zookeeper 选主
先说明一下两个概念 sid代表当前节点的编号 zxid代表事务id,递增的投票分两个步骤,第一步则每个节点都投自身(sid. zxid) 第二阶段,接收到其他节点的投票数据,进行和自身比较,优先比较zxid(选大的),后再比较sid;如果发现其他节点的投票比自己节点大,则修改当前节点的投票数据 进行统计投票结果,过半数则当选为leader...
2020-05-18 10:55:19 137
原创 young gc时间缩减
young gc的耗时主要有两个方面从root对象进行扫描存活的对象 复制存活的对象从缩短扫描存活对象的方面入手:首先我们先考虑root对象包含哪些1、所有java线程以及线程栈帧里指向GC堆里的对象的引用2、JNI Local & Global3、由系统类加载器(system class loader)加载的对象,这些类是不能够被回收的4、stack local Java方法的local变量或参数5、其他,包含monitor & finalizable & n
2020-05-14 14:35:28 647
原创 Hbase学习笔记
创建表语句create 'Student','StuInfo','Grades' Student表名 StuInfo、Grades 字段名注意在 HBase Shell 语法中,所有字符串参数都必须包含在单引号中,且区分大小写,如 Student 和 student 代表两个不同的表另外,在上条命令中没有对列族参数进行定义,因此使用的都是默认参数,如果建表时要设置列族的参数,参考以下方式:create 'Student', {NAME => 'Stulnfo',...
2020-05-11 10:05:41 277
原创 jvm优化
###查看JVM参数默认值java-XX:+PrintFlagsInitial-version|grep"MetaspaceSize"java-XX:+PringCommandLineFlags-version###订单风控-XX:+UseG1GC-Xmx2g-XX:MaxGCPauseMillis=1000-XX:MetaspaceSize=45m-XX:G1...
2020-05-07 18:29:03 160
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人