摘要:
一、概述 1、介绍 JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过多时 Lock 锁的频繁操作。这三种辅助类为: CountDownLatch:减少计数。减一计数器。 CyclicBarrier:循环栅栏。加一计数器。 Semaphore:信号灯。 脑图:https://w 阅读全文
摘要:
一、相关概念 1、System.gc()的理解 通过System.gc()或Runtime.getRuntime().gc()的调用,会显式触发Full GC,对新生代和老年代进行回收,释放垃圾对象占用的内存。 然而System.gc()调用附带一个免责声明,它无法保证对垃圾收集器的调用。即:只是告 阅读全文
摘要:
一、概述 1、什么是垃圾 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集的三个经典问题: (1)哪些内存需要回收? (2)什么时候回收? (3)如何回收? 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃 阅读全文
摘要:
敬请期待。。。 阅读全文
摘要:
敬请期待。。。 阅读全文
摘要:
一、概述 1、介绍 直接内存,不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。是Java堆直接向系统申请的内存区间。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。通常,访问直接内存的速度会优于Java堆,即读写性能高。因此处于性能考 阅读全文
摘要:
一、对象的实例化 1、创建对象的方式 2、创建对象的步骤 脑图:https://www.processon.com/view/link/61701a927d9c087040525226 3、对象属性赋值的步骤 ①属性的默认初始化——对应脑图中"创建对象的步骤"4 ②显式初始化——对应脑图中"创建对象 阅读全文
摘要:
一、概述 1、介绍 《Java虚拟机规范》中明确说明:尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。但对于HotSpot JVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。 所以,方法区看作是一块独立于Java堆的内存空 阅读全文
摘要:
一、堆 1、介绍 Java运行程序对应一个进程,一个进程就对应一个JVM实例。一个JVM实例就有一个运行时数据区(Runtime),Runtime里面,就只有一个堆,一个方法区。这里也阐述了,方法区和堆是一个进程一份。而一个进程当中,可以有多个线程,那就意味着一个进程中的多个线程会共享堆空间和方法区 阅读全文
摘要:
一、概述 1、介绍 类比一下:红框就好比内存的运行时数据区,在各自不同的位置放了不同的东西。而厨师就好比执行引擎。 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定 阅读全文