![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 67
仗剑浪迹天涯丶
每天进步一丢丢
展开
-
简单聊一下JAVA IO模型
系列文章目录 文章目录系列文章目录前言一、BIO - Blocking IO缺点应用场景二、NIO- Non Blocking IO应用场景:NIO 有三大核心组件: Channel(通道), Buffer(缓冲区),Selector(多路复用器)Epoll函数详解Redis线程模型三、AIO应用场景:为什么Netty使用NIO而不是AIO? 前言 IO模型就是指用什么样的通道进行数据的发送和接收,JAVA支持的三种网络编程模型BIO、NIO、AIO 一、BIO - Blocking IO 同步阻塞模型,原创 2021-09-20 18:15:10 · 81 阅读 · 0 评论 -
JVM学习之旅–简单谈一下GC
文章目录一、Young GC1 什么是Young GC?2 什么条件会触发Young GC二 Full GC1 什么是Full GC?2 什么条件会触发Full GC三 Major GC1 什么是Major GC?四 Mixed GC 一、Young GC 1 什么是Young GC? Young GC也成为了Minor GC,大家都知道这是新生代的GC 2 什么条件会触发Young GC Young GC一般是在新生代的Eden区域满了之后就会触发,采用标记复制算法来进行垃圾回收 二 Full GC原创 2021-09-19 15:16:47 · 127 阅读 · 0 评论 -
JVM学习之旅–垃圾回收算法 4
JVM学习之旅–垃圾回收算法 4 文章目录JVM学习之旅–垃圾回收算法 4一、新生代 - 标记复制缺点优化二、对象如何进入老年代1参数2 动态年龄判断3 大对象直接进入老年代4 Minor GC后对象太多,无法放入Survivor直接进入老年代三、老年代 - 标记整理四、常见的垃圾回收器Serial与Serial OldParNew与CMSG1垃圾回收器G1垃圾回收 一、新生代 - 标记复制 给新生代内存划分为两块区域,只是用其中一块,当使用的这块内存快满的时候,就把里面存活的对象一次性转移到另一块区域原创 2021-09-05 13:14:27 · 77 阅读 · 0 评论 -
JVM学习之旅--垃圾回收 3
JVM学习之旅–垃圾回收 3 文章目录JVM学习之旅--垃圾回收 3一、为什么要进行垃圾回收二、什么情况会触发垃圾回收JAVA中对象的不同引用类型强引用软引用弱引用虚引用拓展: 假如没有GC Roots引用的对象,一定立马被回收吗? 一、为什么要进行垃圾回收 JAVA堆内存里面创建的对象,都是占用内存资源,而且内存资源有限 JAVA垃圾回收机制是一个后台自动运行的线程 二、什么情况会触发垃圾回收 当新生代或者老年代里面的对象快要满了的时候,此时会触发垃圾回收,把新生代或老年代没有人引用的对象给回收掉,释放内原创 2021-08-29 19:50:25 · 77 阅读 · 0 评论 -
JVM学习之旅--JVM内存区域 2
JVM学习之旅–JVM内存区域 2 文章目录JVM学习之旅--JVM内存区域 2前言一、JVM内存区域划分 前言 一、JVM内存区域划分 直接上图 1.方法区 主要存放.class文件里加载进来的类信息还有常量池 JDK1.8后, 改名为 Metaspace 元数据空间 2 程序计数器 执行字节码指令时候,JVM需要程序计数器用来记录当前执行字节码指令位置 3 JAVA虚拟机栈 用来保存每个方法内的局部变量等参数 每个线程都有自己的JAVA虚拟机栈 当线程执行一个方法,会对这个方法调用创建对应的一个栈原创 2021-08-27 21:08:14 · 56 阅读 · 0 评论 -
JVM学习之旅--JVM类加载机制 1
JVM学习之旅–JVM类加载机制 1 文章目录JVM学习之旅--JVM类加载机制 1前言一、整体过程二、JVM加载过程三、什么时候会初始化一个类四、类加载器1 启动类加载器 Bootstrap ClassLoader2 扩展类加载器 Extension ClassLoader3 应用程序类加载器 Application ClassLoader4 自定义类加载器五、双亲委派机制什么意思? 前言 JVM整体的运行过程是 先把我们编写的.java代码文件编译成.class字节码文件,然后类加载器把.clas原创 2021-08-22 18:09:52 · 82 阅读 · 0 评论 -
bump-the-pointer 和 TLABs 机制
JVM的GC用到了一些加速内存分配的技术,简单总结如下 Bump-the-pointer(指针碰撞)技术跟踪在Eden空间创建的最后一个对象,这个对象会被放在Eden空间的顶部。如果之后需要创建对象,只需检查Eden空间是否有足够的剩余空间。如果有足够的空间,对象就会被创建在Eden空间,并且被放置在顶部(此时会更换标记位)。这样一来,每次创建新的对象时,只需要检查最后被创建的对象。这将极大地加快内存分配速度。但是,如果我们在多线程的情况下,事情将截然不同。如果想要以线程安全的方式以多线程在伊甸园空间存储.转载 2021-08-10 22:58:20 · 219 阅读 · 0 评论