JavaSE
写代码的Z
这个作者很懒,什么都没留下…
展开
-
Java中主流锁
脑图来源:https://www.cnblogs.com/jyroy/p/11365935.html原创 2020-04-09 10:04:51 · 162 阅读 · 0 评论 -
GC和GC算法
详解分代回收Java 的堆内存被分代管理,为什么要分代管理呢?分代管理主要是为了方便垃圾回收,这样做基于2个事实,第一,大部分对象很快就不再使用;第二,还有一部分不会立即无用,但也不会持续很长时间。虚拟机堆内存划分为年轻代、老年代、和永久代,如下图所示。 年轻代主要用来存放新创建的对象,年轻代分为 Eden 区和两个 Survivor 区。大部分对象在 Eden 区中...转载 2019-10-11 10:14:20 · 275 阅读 · 0 评论 -
JVM类加载机制和双亲委派原则
详解类加载机制类的加载指将编译好的 Class 类文件中的字节码读入内存中,将其放在方法区内并创建对应的 Class 对象。类的加载分为加载、链接、初始化,其中链接又包括验证、准备、解析三步。如下图所示。 加载是文件到内存的过程。通过类的完全限定名查找此类字节码文件,并利用字节码文件创建一个 Class 对象。 验证是对类文件内容验证。目的在于确保 Class ...转载 2019-10-11 10:12:31 · 298 阅读 · 0 评论 -
GC算法之ZGC
详解 ZGCZGC特点ZGC 是最新的 JDK1.11 版本中提供的高效垃圾回收算法,ZGC 针对大堆内存设计可以支持 TB 级别的堆,ZGC 非常高效,能够做到 10ms 以下的回收停顿时间。这么快的响应,ZGC 是如何做到的呢?这是由于 ZGC 具有以下特点。 ZGC 使用了着色指针技术,我们知道 64 位平台上,一个指针的可用位是 64 位,ZGC 限制最大支持 4TB ...转载 2019-10-11 09:53:45 · 2157 阅读 · 1 评论 -
GC算法之G1算法
G1 算法G1 在 1.9 版本后成为 JVM 的默认垃圾回收算法,G1 的特点是保持高回收率的同时,减少停顿。G1 算法取消了堆中年轻代与老年代的物理划分,但它仍然属于分代收集器。G1 算法将堆划分为若干个区域,称作 Region,如下图中的小方格所示。一部分区域用作年轻代,一部分用作老年代,另外还有一种专门用来存储巨型对象的分区。 G1 也和 CMS 一样会遍历...转载 2019-10-11 09:51:29 · 3803 阅读 · 1 评论 -
GC算法之CMS算法
CMS算法CMS算法是JVM中老年代常用的垃圾回收算法,全称是Concurrent Mark Sweep算法,即并发标记-清除算法。算法的执行步骤如下图所示,共有六个步骤。CMS-Steps3.1 初始标记(Initial Mark):CMS算法中两个会触发Stop the World事件中的一个,这个阶段会标记所有与GC Roots直接相关联的对象,以及被存活的青年代对象所直...转载 2019-10-11 09:44:29 · 7248 阅读 · 2 评论 -
JVM内存模型
详解 JVM 内存模型JVM 内存模型主要指运行时的数据区,包括 5 个部分,如下图所示。Heap(堆)和方法区是所有线程共享的,栈、本地方法栈和程序技术器是各个线程独占的。线程独占的:栈也叫方法栈或者Java虚拟机栈,是线程私有的,程在执行每个方法时都会同时创建一个栈帧,用来存储局部变量表、操作栈、动态链接、方法出口等信息。调用方法时执行入栈,方法返回时执行出栈。栈帧:...转载 2019-10-11 09:39:41 · 254 阅读 · 0 评论 -
关于JVM知识点
JVM 知识点汇总JVM知识点有6个大方向,其中,内存模型、类加载机制、GC垃圾回收是比较重点的内容。性能调优部分偏重实际应用,重点突出实践能力。编译器优化和执行模式部分偏重理论基础,主要掌握知识点。各个部分需要了解的知识点如下。 内存模型:程序计数器、方法区、堆、栈、本地方法栈的作用,保存哪些数据。 类加载:双亲委派的加载机制,以及常用类加载器分别加载哪种类型的类...原创 2019-09-30 09:25:39 · 291 阅读 · 0 评论 -
常用的工具
JVM相关工具JMC(Java Mission Control)监控和性能分析:JVM、JFR(重要)、JMX线上调试:btrace:JVM实时监控工具其他常用的JVM工具:jps:查看java进程信息jmap:查看JVM中对象的统计信息jstat:对JVM的资源和性能进行实时监控jstack:查看JVM线程栈信息jinfo:动态查看、调用jvm参数压力测试:JHM常用Linux...原创 2019-08-18 10:33:21 · 145 阅读 · 0 评论 -
Java中反射的使用
反射机制的定义:在运行状态中,对任意一个类,我们都可以通过类名知道这个类所有的方法和属性;对于任意一个对象,我们都能调用它的任意方法和属性(包括私有的方法和属性)。这种动态获取类信息以及动态调用对象方法的功能成为Java语言的反射机制。获取类的Class对象的方式:1.通过实例对象,调用getClass()方法就可以拿到该实例对象所属类的Class对象。2.直接通过类名的方法,如 ...原创 2018-10-23 17:00:38 · 146 阅读 · 0 评论 -
常用的Map集合
HashMap的一些特点及其原理键不可重复,值可重复,底层哈希表存储(计算key的hash码的方式与Hashtable不同),线程不安全,允许key和value的值为null(根据key计算hashcode时进行了判空处理,如果key为空,hashcode=0)。普通情况下HashMap的哈希表采用拉链法进行实现,优化哈希函数和减小哈希因子可以降低哈希冲突,而哈希表采用拉链法进行存储就可能会出...原创 2018-10-14 11:04:48 · 1367 阅读 · 0 评论 -
关于Hashtable的一些说明
由于Hashtable已经不推荐使用了,因此这里只记录一下特点(这些特点也是与HashMap的不同点):1.Hashtable内部也是使用哈希表存储,哈希表的实现是拉链法(HashMap虽然也哈希表存储,不过HashMap更加“聪明”,设置了临界值,在元素的数量达到临界值之前都词用拉链法实现,当达到临界值后为了有更好的效率表现,就将拉链法改为采用红黑树法)2.Hashtable的key和v...原创 2018-10-19 16:03:49 · 815 阅读 · 0 评论 -
常用的List集合
ArrayList的一些特点及原理特点是排列有序,可重复,底层使用数组存储,读取速度快,增删慢,getter()和setter()方法快,线程不安全,当容量不够时,ArrayList会扩容当前容量的一半。看如下源码://默认容量private static final int DEFAULT_CAPACITY = 10;//一个空的数组,当初始化的容量为0时,让数组变量eleme...原创 2018-10-10 09:35:29 · 929 阅读 · 0 评论 -
Java内部类
什么是内部类? 内部类顾就是定义在一个类内部的类。内部类的实现方式 内部类:成员内部类、局部内部类、匿名内部类、静态内部类。实现Demo (1)成员内部类public class Out{ class Inner{ ... } public Inner getInner(){ return new Inner();原创 2016-06-14 10:50:03 · 222 阅读 · 0 评论