- 博客(12)
- 收藏
- 关注
原创 java String的split方法性能怎么样?
java String的split方法性能怎么样?简要概述结论:1.split方法本来是针对正则表达式对字符串切分的,java6以前,每次split都会编译一遍正则表达式。但其实大多数情况下,我们只是对逗号/分号/空格这种单一字符切分,java7以后进行了优化,对于这种基本的单一字符,不再每次都编译2.split返回的是数组,内部使用的是list,最后会有一次list复制为数组的过程,可以优化3.平常处理的时候其实像文件加载内存一样,不需要整个直接加载到内存,可以一行一行的读;字符串在分割时,可以一
2022-03-20 00:01:38 934
原创 java中的包和导包
包的概念和导包的概念包的作用用来将类区分开,使每个类独一无二。一般包名都是小写。类的全类名:xxx.yyy.demo.class导包的作用import xxx.yyy.zzzpackage包将类分离开来import导包则将类聚集起来,让其他包的类可见,使编译器能够识别。使用同一包下的类,不需要导包;使用不同包下的类,需要导包(即使是父子包的关系)导包和权限修饰符的关系导包只是让类变得可见。而对于其中的内容,是否可访问则由权限修饰符决定。...
2020-06-30 16:00:11 1572
原创 idea中maven项目报错:failed to read artifact descriptor
报错内容:failed to read artifact descriptor报错截图:会在project处出现红线原因下面的dependency没有导入进来解决办法添加version,或者reimport.
2020-06-28 22:08:00 664
原创 JVM学习笔记(九)-从JVM看synchronized和Volatile
synchronized关键字 synchronized是一种非常传统的阻塞同步方式。用它加锁意味着多线程环境下,当多个线程需要进同步块时,会以串行的方式运行,即没有获得锁的线程会等到获取锁的线程执行完同步块,释放锁资源后才能竞争锁,得到锁后才能继续运行。但是到了JDK1.6进行优化后,就不是那么简单了。加锁和解锁synchronized可加三种锁:给普通方法加锁,锁住实例对象给静态...
2019-06-21 12:59:33 179
原创 JVM学习笔记(八)-Java内存模型
总体架构内存模型图 之所以画成这样,是因为对《深入理解java虚拟机》中提到的内存模型中内存间的交互操作的理解,而不是简单的像书中的图一样。基于执行引擎和主内存的交互方式,以及read、load,store、write操作的含义,我个人认为应该加一个执行引擎和变量值暂存(有可能是寄存器、缓存等)。 如图所示,每个线程都会有自己的工作内存,在工作时,对共享变量的访问必须先从主内存...
2019-06-15 13:56:05 132
原创 JVM学习笔记(七)-类加载器
回顾 上一篇博客复习了JVM的类加载过程,对加载、验证、准备、解析、初始化等各个阶段进行了详细内容的复习。但是,关于类加载,还有一块重要的知识——类加载器,它跟加载阶段、解析阶段等有着紧密的联系。 本篇博客将会对类加载器的分类、双亲委派模型以及打破双亲委派等方面进行复习。类加载器的分类 我们常把类加载器分为四类:启动类加载器(Bootstrap ClassLoader)扩展类加...
2019-06-13 13:09:38 149
原创 JVM学习笔记(六)-类加载过程
类加载总体流程先上图:类加载总体流程图 其中,大的步骤分为加载、连接、初始化、使用和卸载,连接包括验证、准备、解析。这里有一点需要注意的地方,图中各阶段的执行顺序问题。各阶段的执行顺序问题 图中只有加载、验证、准备、初始化是按部就班执行的,解析阶段不一定是按图中顺序执行。另外,前面所谓的按部就班,并不是严格地说上一阶段执行完了下个阶段才开始执行,也就是说阶段之间会有时间上的...
2019-06-12 19:00:51 191
原创 JVM学习笔记(五)-JVM的垃圾收集2
回顾上一篇博客,学习了垃圾收集前的准备工作,包括对象存活判定算法、垃圾收集算法和JVM对以上算法的实现。本篇博客将接着上篇博客的内容,对JVM的垃圾收集相关知识进行进一步学习(由于之前一直用的学习这个词,现在就沿用了,其实这是第三遍复习,通过写博客找不足同时加深印象,后面将会用复习这个词了)。本篇博客首先学习几种垃圾收集器的特性和适用场景,然后会对java对象的内存分配策略和内存回收策略进行学...
2019-06-10 13:36:07 437
原创 JVM学习笔记(四)-JVM的垃圾收集1
回顾 上一篇博客写了JVM的内存溢出问题,比较了内存溢出和内存泄漏的区别,然后对虚拟机栈的OOM和SOF、方法区和运行时常量池的OOM、堆的OOM做了相关实验验证,在实验过程中发现了java8对方法区perm gen的改进,即metaspace代替perm gen(java7将字符串常量池移入了堆中)。最后,对于使用stringbuilder造成的heap space的OOM的实验现象提出了两...
2019-06-07 19:39:21 148
原创 JVM学习笔记(三)-内存溢出
回顾 上一篇博客学习了JVM的运行时数据区域,分为程序计数器、虚拟机栈、本地方法栈、堆、方法区五个区域展开进行学习。重点介绍了虚拟机栈的栈帧结构,堆的对象创建、对象内存布局、对象的访问,运行时常量池和class文件常量池等知识点。在介绍各个区域的特点时,有一个词频繁提到,那就是OOM,除了程序计数器外,每个区域都有可能发生OOM,虚拟机栈和本地方法栈还有可能会发生stackoverflow e...
2019-06-06 16:40:05 375
原创 JVM学习笔记(二):JVM内存区域
回顾 上一篇博客讲到了JVM的定义,和JRE,JDK的区别。重点介绍了JVM的整体体系结构。包括class文件,类加载器,JVM内存区域,执行引擎,本地方法接口,垃圾收集器等部分,对JVM的知识体系有了一个总体的认识。 这篇博客主要介绍了JVM内存区域,对内存区域的划分、各部分的作用和特点以及内存溢出等相关知识。JVM内存区域总体划分 不多说,内存区域划分,也常叫运行时数据区域...
2019-06-03 22:03:54 299
原创 JVM学习笔记(一):JVM整体体系结构
前言 第一次写博客, 有点小激动。博客本意是为了整理自己学习的思路,建立知识体系,不像其他大佬的博客会对知识进行深入剖析。 我不想学了很多,最后都是知识碎片,别人一问起来某个概念,自己貌似知道一点,但是讲不清楚到底是个什么东西,细节知识倒是零零碎碎知道一些,这和没学感觉没差别。 ...
2019-05-27 19:13:23 248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人