• 等级
  • 9196 访问
  • 99 原创
  • 3 转发
  • 66891 排名
  • 1 评论
  • 2 获赞

JVM常用命令

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

2019-05-21 10:45:30

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

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

2019-05-17 16:25:30

Java虚拟机之四大回收算法

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

2019-05-17 16:18:47

CompletableFuture

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

2019-05-13 10:02:44

Java虚拟机之破坏双亲委派

破坏双亲委派:一个典型的例子便是JNDI服务,JNDI现在已经是Java的标准服务,它的代码由启动类加载器去加载,但JNDI的目的就是对资源进行集中管理和查找,它需要调用由独立厂商实现并部署在应用程序的ClassPath下的JNDI接口提供者(SPI,ServiceProviderInterface)的代码,但启动类加载器不可能“认识”这些代码啊!那该怎么办?为了解决这个问题,Java设...

2019-05-08 13:58:25

Java虚拟机之双亲委派模型

Java主要有两种类加载器:一种是启动类加载器(BootstrapClassLoader),这个类加载器使用C++语言实现[1],是虚拟机自身的一部分;另一种就是所有其他的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全都继承自抽象类java.lang.ClassLoader。从Java开发人员的角度来看,类加载器还可以划分得更细致一些,绝大部分Java程序都会使用到以下3种系...

2019-05-08 13:38:32

Java虚拟机之双亲委派

packagejava.lang;/****@ClassName:Object*@Description:TODO(这里用一句话描述这个类的作用)*@authorpangning@58.com*@date2019年5月7日下午6:24:18**/publicclassObject{}执行javacObject.jav...

2019-05-07 19:09:35

Java虚拟机之类加载机制

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

2019-05-07 17:34:41

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.0149142secs]4603K->210K(19456K),[Perm:2999K->2999K...

2019-05-07 14:53:08

Java虚拟机之GC收集器

2019-05-07 14:40:57

Java虚拟机之GC算法

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

2019-05-07 14:40:12

Java虚拟机之GC基础

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

2019-05-06 17:20:46

DNS解析顺序

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

2019-05-06 14:36:16

8.Netty之断线重连

Netty之断线重连

2019-05-04 23:26:06

7.Netty之心跳检测

tcp心跳检测

2019-05-04 23:25:44

6.Netty之序列化反序列化

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

2019-05-04 23:24:07

5.Netty之TCP拆包粘包

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

2019-05-04 23:17:09

aqs学习

aqs是一个很重要的并发框架,熟悉之后可以很方便的构造自己的并发工具。aqs核心在于一个acquire方法。publicfinalvoidacquire(intarg){if(!tryAcquire(arg)&&acquireQueued(addWaiter(Node.EXCLUSIVE),arg)){selfInterr...

2019-04-26 15:02:32

各个软件版本定义描述

2019-04-16 12:49:52

面向对象设计原则

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

2019-04-12 09:35:20

mic_saber

不能决定天气,但可以选择心情
关注
  • Senior engineer
  • 中国
奖章
  • 专栏达人
  • 持之以恒
  • 勤写标兵Lv1
  • 勤写标兵Lv2