自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 BIO和NIO的原理分析

BIO和NIO的原理分析1、什么是BIO和NIO?BIO是同步阻塞的网络传输协议,NIO是同步非阻塞的网络传输协议。同步阻塞:比如你去大保健要叫十三号技师,刚好十三号技师在忙,你就在那什么事也不干,傻傻的等,直到十三号技师忙完了,才会给你服务,这个过程就是同步阻塞。同步非阻塞:你去大保健也要叫十三号技师,十三号技师在忙,你就可以在那玩玩手机,和前台小姐姐聊聊人生什么的,直到十三号技师忙完了,才会给你服务,这个过程就是同步非阻塞。BIO实现的思路:客户端和服务器传输数据,需要用到ServerSo

2020-10-30 13:53:28 146

原创 类加载机制和双亲委派机制

类的生命周期:1 加载 -> 2 链接 {(1)准备 (2)验证 (3)解析}-> 3初始化 -> 4 使用 ->5卸载**1加载:**加载阶段虚拟机需要完成以下 3 件事情:1)通过一个类的全限定名来获取定义此类的二进制字节流。2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3)在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个 类的各种数据的访问入口。2验证:文件格式验证,元数据验证,字节码验

2020-07-31 15:40:20 118

原创 JVM三色标记

在CMS和G1并发标记的过程中会采用三色标记算法,它是用来解决 GC 运行时程序长时间挂起的问题,最大的好处是可以异步执行,从而可以以中断时间极少的代价或者完全没有中断来进行整个 GC。三色标记法很简单。首先将对象用三种颜色表示,分别是白色、灰色和黑色。首先会把所有的对象都至为白色,然后根据跟可达性算法开始扫描,把扫过的对象变成灰色,然后继续扫描他的子对象,这个时候把子对象变成灰色,把这个对象变成黑色。等到扫描完成的时候把子对象也变成黑色。没有扫到的对象就还是白色了,那么白色的对象就是需要清理的对象。

2020-07-27 10:45:09 273

原创 JVM垃圾回收机制及算法

栈:栈中的生命周期是跟随线程,所以不是关注的重点堆:堆中的对象是共享的,也是存活时间比较长的,所以是重点。新生代采用是复制回收算法,老年代采用的标记清除,标记整理算法。复制算法(Copying)就是将from区和to区分成1:1,然后当发生新生代GC(Minor GC/Young GC两者叫法不一样,其实意思都是年轻代的GC)的时候,会把from区的数据复制到to区去,然后格式化from区的对象。再发生Minor GC/Young的时候重新把to区的对象又复制到from区去,然..

2020-07-24 11:19:55 102

原创 JVM对象的知识

虚拟机遇到一条 new 指令时,是如何创建对象呢?可以用一个流程图来解答类加载就是把 class 加载到 JVM 的运行时数据区的过程,后面会细说。(1)检查加载:检查这个指令的参数能否在常量池定位到一个符号引用,并且检查当前类是否已经被初始化,解析,初始化过。(2)分配内存:分配内存有两种方式: 一:是指针碰撞,我们都知道对象都是首先在Eden区分配的,如果那个区的内存空间是连续的整齐的,就会用一个指针来当作已经被分配...

2020-07-22 11:15:55 59

原创 深入理解运行时数据区

1 向操作系统申请分配内存空间2 获取内存空间后,会根据配置参数分配堆 栈以及方法区的大小3 类加载把 class 放入方法区、还有 class 中的静态变量和常量也要放入方法区4执行方法及创建对象总结一下 JVM 运行内存的整体流程JVM 在操作系统上启动,申请内存,先进行运行时数据区的初始化,然后把类加载到方法区,最后执行方法。 方法的执行和退出过程在内存上的体现上就是虚拟机栈中栈帧的入栈和出栈。 同时在方法的执行过程中创建的对象一般情况下都是放在堆中,最后堆中的对象也..

2020-07-21 09:23:15 133

原创 JVM学习之路笔记

JVM 的内存区域 运行时数据区域就是上面的图,先说共享区,就是可以被所有线程访问的(1)方法区:存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。在jdk1.7以前被称为永久代,1.8以后被称为元空间JVM 在执行某个类的时候,必须先加载,class文件中除了方法接口类信息外还有一个常量池,它里面有字面量和符合引用字面量就是字符串(String a=“b”)、基本类型的常量(final 修饰的变量)符合引用就是假如一个类比如说是Test类吧,它引用了一

2020-07-17 10:59:06 73

原创 多线程的启动和终止(个人学习笔记)

启动线程的方式:1.class extentdsThread然后class.start();2.classimplements Runnable,然后交给Thread运行。Thread 和 Runnable 的区别publicclass Thread implements Runnable { /* Make sure registerNatives is the first thing <clinit> does. */ private static ...

2020-06-29 10:11:30 130

原创 java并发基础(个人学习笔记,忽喷)

什么是进程和线程?个人理解:进程是程序运行时资源分配的最小单位,相当于就是程序应用的一个执行活动,比如你运行一个程序,你就启动了一个进程,当电脑卡的时候我们可以点击电脑桌面最下面的任务管理器下面来结束掉无用的进程。进程和进程之间都是相互独立存在的,进程依赖于应用程序。线程是cpu调度的最小单位,它必须依赖于进程而存在,不能单独存在。任何一个程序都必须创建线程。做个简单的比喻:进程=火车,线程=车厢CPU 核心数和线程数的关系cpu核心数就是指电脑是几核的线程数是同一时刻设备并行执行的程序个

2020-06-28 16:35:37 53

空空如也

空空如也

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

TA关注的人

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