BFE

瘟疫期间在家宅出的 RPC 框架

半腔热情 提交于 2020-02-27 06:31:27
TIANAI-RPC https://gitee.com/tianai/tianai-rpc TIANAI-RPC 码云地址 https://gitee.com/tianai/tianai-rpc-springboot-starter TIANAI-RPC 的springboot快速启动包 如果有兴趣想一起参与的小伙伴欢迎加QQ群: 1021884609 笔者为什么写这个RPC框架呢?? 这一切都要从一只 蝙蝠 说起... 苦思冥想一晚上不得解, 为什么要吃蝙蝠? 难道是想上天??? 瘟疫满天飞 工作不得找 花呗天天催 血从心中流 笔者在兼职都找不到,工作又找不到的双重鼓励下 笔者头悬梁锥刺股耗尽心血写出这个看似很牛x的RPC框架 ​ 该RPC框架目前实现有 基于zookeeper的服务注册 增加基于nacos的服务注册 基于Netty实现的远程通讯 基于hessian2实现的序列化、反序列化 实现了基于轮询策略的负载均衡 使用Netty自带的心跳机制实现心跳机制 实现网络抖动后造成的链接断开后重连 该RPC框架的稳定性通过 本人 基本测试,亦可用于中小型rpc通讯,比 dubbo 更加轻量 TIANAI-RPC基本使用 server端: public class RpcServerImplTest2 { public static void main(String\[\]

什么是专用字节,虚拟字节,工作集?

人盡茶涼 提交于 2020-02-26 16:32:13
我试图使用perfmon Windows实用程序来调试进程中的内存泄漏。 这就是perfmon解释这些术语的方式: Working Set 是此过程的工作集的当前大小(以字节为单位)。 工作集是过程中线程最近触及的一组内存页面。 如果计算机中的可用内存超过阈值,则即使不使用页面,页面也会保留在进程的工作集中。 当可用内存低于阈值时,将从工作集中剪裁页面。 如果需要它们,它们将在离开主存储器之前被软故障返回工作集。 Virtual Bytes 是进程正在使用的虚拟地址空间的当前大小(以字节为单位)。 使用虚拟地址空间不一定意味着相应地使用磁盘或主存储器页面。 虚拟空间是有限的,并且该过程可以限制其加载库的能力。 Private Bytes 是此进程分配的内存的当前大小(以字节为单位),无法与其他进程共享。 这些是我的问题: 是否应该测量私有字节,以确定进程是否有任何泄漏,因为它不涉及任何共享库,如果发生任何泄漏,将来自进程本身? 该进程消耗的总内存是多少? 它是虚拟字节还是虚拟字节和工作集的总和? 私有字节,工作集和虚拟字节之间是否有任何关系? 还有其他工具可以更好地了解内存使用情况吗? #1楼 对这个问题的简短回答是, 这些值都不是可执行程序实际使用的内存量的可靠指标,并且它们都不适合调试内存泄漏。 Private Bytes 指的是进程可执行文件 要求 的内存量 - 不一定是它

linux里查看最耗CPU的线程(full gc)

孤者浪人 提交于 2019-12-19 12:07:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、top后按c查看最耗cpu的进程,得到pid 2、top -Hp pid 查看该进程里的线程资源使用情况,找到最耗资源的线程的pid 3、jstack pid来查看进程的各个线程栈,注意这里的pid是第一步中进程的pid,不是第二步得到的线程id 4、将第二步得到的pid转成16进制之后在线程栈信息里查找nid等于pid16进制的,就找到最耗资源的线程的栈信息 话不多说了,先来看代码吧 public class Test{ public static void main(String args[]){ for(int i=0;i<10;i++){ new Thread(){ public void run(){ try{ Thread.sleep(100000); }catch(Exception e){} } }.start(); } Thread t=new Thread(){ public void run(){ int i=0; while(true){ i=(i++)/100; } } }; t.setName("Busiest Thread"); t.start(); } } 这个例子里新创建了11个线程,其中10个线程没干什么事,主要是sleep,另外有一个线程在循环里一直跑着