Loading...
TLAB(Thread Local Allocation Buffer) 线程本地分配缓存区由于对象一般分配在堆上,而堆是线程共用的,因此可能会有多个线程在堆上申请空间,而每一次的对象分配都必须加锁保证线程同步,会使分配的效率下降。考虑到对象分配几乎是 Java 中最常用的操作,因此 JVM 使用了 TLAB 这样的线程专有区域来避免多线程冲突,提高对象分配的效率。我们说 TLAB 是线程独...
使用过 Java 的函数接口,就会被简介的语法深深的吸引,苦于代码中大量的 try...catch 繁琐代码,最近借鉴 java.util.Optional 的实现写了个简化的小工具。以 Long.valueOf() 为例,假如需要把一个字符串转换为long,如果转换失败则设置默认值为 -1,一般会作如下处理:String param = "10s"; long res...
settings.xml 是 maven 的配置文件,用户配置文件存放于 ${user.home}/.m2/ 目录下,系统全局配置文件放置于 ${mave...
接着上次 JVM 中 GC 机制的总结,这次主要复习一下垃圾收集的常用算法和 Minor GC、Full GC 相关的一些知识点。一、垃圾收集算法1.1 ...
在 JVM 运行时数据区域中,程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个...
一些零碎的知识点总是似懂非懂,用法老是模棱两可,每次都要去网络上查询,长时间不用又忘记了。比如 Java 中的位运算。今天抽空归纳总结一下,加强一下记忆。...
Java 的内存区域划分绝不仅仅只是堆内存(heap)和栈内存(Stack),实际上 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为以下几个数据区域:程序计数器、Java 虚拟机栈、本地方法栈、堆、方法区、运行时常量和直接内存。如下图所示:
单元测试(Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。如果我们写的代码依赖于某些模块对象,而单元测试过程中这些对象又很难手动创建,或者模块还没有开发完成,那么就使用一个虚拟的对象来完成单元测试,这就是所谓的 Mock。Java 单元测试中比较流行的 Mock 测试框架有 jMock、EasyMock、Mockito,但是这些 Mo...
System.getProperty() 可以获取系统的配置信息,最近项目开发中要用到临时文件,所以想到了使用系统临时文件目录,最后得知可以通过 System.getProperty("java.io.tmpdir") 可以获取不同操作系统平台下的临时目录。比如:在 windows 中的目录是:C:\Users\登录用户~1\AppData\Local\Temp\在 li...