乔治de博客

长路漫漫 https://github.com/yooneep/

JVM常用命令

jps -q 只输出进程号 -m 输出main函数的参数 -l 输出类的全名,或者jar包路径 -v 输出jvm启动参数配置 jstat 类装载、内存、垃圾收集、JIT编译等运行数据 -class -gc -compiler -printcompilation jinfo 实时地查看和调整虚...

2019-05-21 10:45:30

阅读数 1

评论数 0

Java虚拟机之七大垃圾回收器

GC分新生代和老年代,鸟瞰如下: Serial收集器 单线程,垃圾收集时,必须暂停其他所有的工作线程 Client模式下的默认新生代收集器.简单而高效(限定单个CPU,与其他收集器的单线程比) ParNew收集器 Serial收集器的多线程版本 除了Serial收集器外,目前只有它能与CM...

2019-05-17 16:25:30

阅读数 6

评论数 0

Java虚拟机之四大回收算法

标记-清除算法 最基础的收集算法,算法分为“标记”和“清除”两个阶段: 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,它的标记过程其实在前一节讲述对象标记判定时已经介绍过了. 它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的. 主要不...

2019-05-17 16:18:47

阅读数 5

评论数 0

CompletableFuture

Future有一定的局限性,无法实现某些场景的异步处理 将两个异步计算合并为一个(这两个异步计算之间相互独立,同时第二个又依赖于第一个的结果). 等待Future集合中的所有任务都完成. 仅等待Future集合中最快结束的任务完成(有可能因为它们试图通过不同的方式计算同一个值),并返回它的结...

2019-05-13 10:02:44

阅读数 2

评论数 0

Java虚拟机之破坏双亲委派

破坏双亲委派: 一个典型的例子便是JNDI服务,JNDI现在已经是Java的标准服务,它的代码由启动类加载器去加载,但JNDI的目的就是对资源进行集中管理和查找,它需要调用由独立厂商实现并部署在应用程序的ClassPath下的JNDI接口提供者(SPI,Service Provider Inter...

2019-05-08 13:58:25

阅读数 9

评论数 0

Java虚拟机之双亲委派模型

Java主要有两种类加载器:一种是启动类加载器(BootstrapClassLoader),这个类加载器使用C++语言实现[1],是虚拟机自身的一部分;另一种就是所有其他的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全都继承自抽象类java.lang.ClassLoader。...

2019-05-08 13:38:32

阅读数 9

评论数 0

Java虚拟机之双亲委派

package java.lang; /** * * @ClassName: Object * @Description: TODO(这里用一句话描述这个类的作用) * @author pangning@58.com * @date 2019年5月7日 下午6:24:18 ...

2019-05-07 19:09:35

阅读数 11

评论数 0

Java虚拟机之类加载机制

类的生命周期如下图: 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。注意,这里笔者写的是按部就班地“开始”...

2019-05-07 17:34:41

阅读数 7

评论数 0

Java虚拟机之GC日志

阅读GC日志是解决JVM问题的基础 33.125:[GC[DefNew:3324K->152K(3712K),0.0025925secs]3324K->152K(11904K), 0.0031680secs]100.667:[FullGC[Tenured:0K->210K(10240K),0....

2019-05-07 14:53:08

阅读数 10

评论数 0

Java虚拟机之GC收集器

2019-05-07 14:40:57

阅读数 10

评论数 0

Java虚拟机之GC算法

标记清除算法 一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。 复制算法(新生代) 可用内存按容量划分为大小相等的两块...

2019-05-07 14:40:12

阅读数 3

评论数 0

Java虚拟机之GC基础

内存的动态分配与内存回收技术已经相当成熟,为什么我们还要去了解GC和内存分配呢? 需要排查各种内存溢出、内存泄漏问题。 GC成为系统瓶颈时,需要实施必要的监控和调节。 程序计数器、虚拟机栈、本地方法栈3个区域生命周期同线程; 栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。 每...

2019-05-06 17:20:46

阅读数 11

评论数 0

DNS解析顺序

解析顺序   1)浏览器缓存   当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);   2)系统缓存   当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP; ...

2019-05-06 14:36:16

阅读数 39

评论数 0

8.Netty之断线重连

Netty之断线重连

2019-05-04 23:26:06

阅读数 19

评论数 0

7.Netty之心跳检测

tcp心跳检测

2019-05-04 23:25:44

阅读数 27

评论数 0

6.Netty之序列化反序列化

Java序列化目的: 网络传输 对象持久化 原生Java序列化缺点 不支持跨语言 码流太大性能低 推荐其他 ProtoBuf Thrift Marshalling Kyro MessagePack

2019-05-04 23:24:07

阅读数 12

评论数 0

5.Netty之TCP拆包粘包

TCP网络传输之拆包粘包。 产生原因 熟悉tcp的都知道内部有个滑动窗口协议,分组以及限流。 数据包大于缓冲区 MSS大小的TCP分段 以太网payload大于MTU进行IP分片 解决方案 fixed length split head body ect... ...

2019-05-04 23:17:09

阅读数 11

评论数 0

aqs学习

aqs是一个很重要的并发框架,熟悉之后可以很方便的构造自己的并发工具。 aqs核心在于一个acquire方法。 public final void acquire(int arg) { if (!tryAcquire(arg) && acquire...

2019-04-26 15:02:32

阅读数 16

评论数 0

各个软件版本定义描述

2019-04-16 12:49:52

阅读数 15

评论数 0

面向对象设计原则

开闭原则(Open-Closed Principle, OCP) 软件实体如类、模块和函数应该对扩展开放,对修改关闭。 依赖倒置(Dependence Inversion Principle,DIP) 高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依...

2019-04-12 09:35:20

阅读数 10

评论数 0

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