![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 79
包含源码分析,主要是Java语言中的源码和优雅Java代码的探索分析
全栈黎明
以代码为生
展开
-
垃圾回收器
7大垃圾回收器两个评价参数Serial回收器:串行回收ParNew(管新生代)(不上不下,已经失宠)Parallel Scavenge回收器(吞吐量优先)CMS(current-Mark-Sweep)低延迟小结两个评价参数吞吐量: 用户时间和总时间的比值暂停时间:垃圾回收线程停止工作的时间Serial回收器:串行回收新生代名字: Serial GC(新生代)收集算法: 复制算法老年代名字: Serial Old GC(老年代)收集算法: 标记-压缩算法优点和缺点缺点原创 2020-08-09 20:10:52 · 164 阅读 · 0 评论 -
五种OOM异常
目录heap Space OOMGC overhead limit OOMDirect buffer memory OOMUnableToCreateNewNativeThread OOMMetaSpace OOMheap Space OOM这种异常经常出现,通常都会出现这个异常,表示内存空间不够,使用如下代码,用一个死循环来生产字符串,由于Java8之后字符串常量池放在堆里面,就会报这个异常public static void main(String[] args) { Stri原创 2021-01-29 17:03:04 · 411 阅读 · 0 评论 -
内存溢出和内存泄漏
这里写目录标题内存溢出(内存不够用)内存泄漏(内存开始够用,但浪费很多,之后不够用)有关内存泄漏的例子内存溢出(内存不够用)典型的内存溢出就是Out Of Memory(OOM)由于GC不断发展,所以一般情况下不会发生OOM,除非应用程序占用的内存增长速度非常快,造成垃圾回收的速度已经跟不上内存消耗的速度官方对于OOM的解释就是没有空闲的内存,并且垃圾回收器也无法提供更多内存堆内存不够一般有两个原因jvm设置的堆的大小不够 : 可通过Xmx,Xms来设置代码中创建了大量大原创 2020-08-01 19:37:16 · 90 阅读 · 0 评论 -
四种引用
四大引用四个引用又什么区别?具体使用场景是什么?强引用(正常环境)(可触及)软引用(缓存)(软可触及)弱引用(缓存)(弱可触及)虚引用(虚可触及)四个引用又什么区别?具体使用场景是什么?强引用(正常环境)(可触及)Object o = new Object();OOM也不回收,是内存溢出的主力软引用(缓存)(软可触及)1. 程序将要发生内存溢出之前,将会将这些对象列入回收范围类进行第二次回收,如果这次回收还没有足够的内存,才会抛出内存溢出异常2. 只要内存不够就杀掉软引用(都被回收掉了,还咋原创 2020-10-01 19:32:08 · 77 阅读 · 0 评论 -
JVM常见参数设置
JVM常见参数JVM参数分类小问题具体的参数分类标配参数X参数(主要用来设置编译器)XX参数常见的五种OOM异常heap Space OOMGCOverHeadLimitExceed OOMDirectBufferMemory OOMUnableToCreateNewNativehread OOM附加一道线程面试题元空间 OOM注意点JVM参数分类小问题哪一些对象可以是GCRoots对象?虚拟机中栈引用的对象,虚拟机中方法区的静态属性引用的变量,常量值中的符号引用,本地方法栈中的引用的对象具体原创 2020-08-10 16:13:33 · 278 阅读 · 0 评论 -
SpringBoot自动配置原理
SpringBoot自动配置原理解析要说自动配置的原理,首先来到@SpringBootApplication注解注解主要有以下三个注解合成:@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(...)@SpringBootConfiguration里面主要是有@Configuration注解@Configuration //作用是声明配置类public @interface SpringBootConfigurati原创 2021-01-29 15:57:19 · 129 阅读 · 0 评论 -
回顾Java反射
目录简单操作获取基本的类信息获取构造器,然后创建实例使用反射操作对象的方法反射操作字段简单操作获取基本的类信息 public static void main(String[] args) { Class clazz = TempTest.class; //获取访问修饰符 int modify = clazz.getModifiers(); System.out.println(Modifier.toString(modi原创 2021-02-04 18:58:08 · 77 阅读 · 0 评论 -
文件IO的两个小需求
首先来一刀小需求:打印指定目录下的所有的以.txt结尾的文件思路也好办,首先使用一个File类来完成指定路径的封装,然后使用递归找到这个指定目录下所有文件,只要文件名字以.txt结尾,就打印当前文件的名字...原创 2021-01-14 19:24:36 · 96 阅读 · 0 评论 -
集合类随笔(TreeSet)
集合类随笔(二)Java中的集合类里面很多方法都有优雅的代码实现,回顾基础,下面我们来探索Java中的TreeSet和TreeMap的实现集合类大致接口分布如下:Collection |- Set |-HashSet |-TreeSet ... |-List ...TreeSet关于Set这种类型的集合,作为一个Java程序员,最快想到的可能就是我们常用的HashSet,而关于TreeSet,它的特性就在于它的元素是排好序的元素,当然这个排好序原创 2021-01-13 08:33:38 · 109 阅读 · 0 评论 -
集合类随笔(迭代器)
集合类随笔回顾集合类的整体框架结构,集合类简单的看主要有以下分类:Collection |-List |-ArrayList |-LinkedList |-Set |-HashSet |-LinkedListJava的集合类的常用API主要用来实现元素的存储和增删改查,对于集合类而言,为什么没有集合类元素的遍历方法呢?从某种角度来讲,如果再在集合类里面加上集合元素的遍历操作,显得在功能上有几分冗余,也就是说,不满足类设计的单一职责原则因原创 2021-01-11 08:38:47 · 160 阅读 · 1 评论 -
集合类中的迭代器源码解读
集合类随笔回顾集合类的整体框架结构,集合类简单的看主要有以下分类:Collection |-List |-ArrayList |-LinkedList |-Set |-HashSet |-LinkedListJava的集合类的常用API主要用来实现元素的存储和增删改查,对于集合类而言,为什么没有集合类元素的遍历方法呢?从某种角度来讲,如果再在集合类里面加上集合元素的遍历操作,显得在功能上有几分冗余,也就是说,不满足类设计的单一职责原则因原创 2021-01-11 08:34:04 · 145 阅读 · 0 评论 -
常见的几种设计模式
常见设计模式创建型模式单例模式(双重检查锁版)工厂设计模式普通工厂模式(静态工厂方法模式)抽象工厂模式建造者模式结构型模式行为型模式创建型模式单例模式(双重检查锁版)public class LazyMan2 { //声明变量 private static volatile LazyMan2 singleton = null; //私有化构造函数 private LazyMan2(){ } //提供对外方法原创 2020-12-22 16:04:54 · 74 阅读 · 0 评论 -
String对象的特性
慢慢来String对象的不可变问题二级目录三级目录String对象的不可变问题public static void main(String[] args) { //通过反射来破坏String String str = "张三"; System.out.println(str); try { Field field = String.class.getDeclaredField("value");原创 2020-12-22 15:25:18 · 91 阅读 · 0 评论 -
常见集合类(ArrayList)
常见集合类ArrayListArrayList源码解析add方法ArrayList线程安全问题HashSetHashMapArrayListArrayList源码解析add方法ArrayList线程安全问题HashSetHashMap原创 2020-10-01 18:55:18 · 118 阅读 · 0 评论 -
HashMap源码解读
HashMap一级目录二级目录三级目录一级目录二级目录三级目录原创 2020-09-27 14:19:30 · 83 阅读 · 0 评论 -
CopyOnWriteArrayList源码分析
CopyOnWriteArrayList原理分析继承类图成员变量分析主要方法分析构造函数增删方法add方法get方法remove方法扩展方法小结原理分析继承类图成员变量分析只有两个属性一个是ReentrantLock类型的变量lock另一个是一个Object类型的数组变量array主要方法分析构造函数setArray(): 这个方法会被后面的构造方法调用,用来设置成员变量array的值/** * Sets the array. */ final v原创 2020-09-24 21:38:21 · 86 阅读 · 0 评论