Java中对象一般创建在堆内存中,在堆内存空间不足的时候,GC便会进行垃圾回收,如果过于频繁,便会影响程序的性能,所以逃逸分析由此诞生,它的目的就是判断哪些对象是可以存储在栈内存中而不用存储在堆内存中的,从而让其随着线程的消逝而消逝,进而减少了GC发生的频率,这也是常见的JVM优化技巧之一。
Java中对象一般创建在堆内存中,在堆内存空间不足的时候,GC便会进行垃圾回收,如果过于频繁,便会影响程序的性能,所以逃逸分析由此诞生,它的目的就是判断哪些对象是可以存储在栈内存中而不用存储在堆内存中的,从而让其随着线程的消逝而消逝,进而减少了GC发生的频率,这也是常见的JVM优化技巧之一。
我们知道,程序在运行的时候,为了提高性能,大部分数据都是会加载到内存中进行运算的,有些数据是需要常驻内存中的,但是有些数据,用过之后便不会再需要了,我们称这部分数据为垃圾数据。 为了防止内存被使用完,我们需要将这些垃圾数据进行回收,即需要将这部分内存空间进行释放。不同于 C++ 需要自行释放内存的机制,Java 虚拟机(JVM)提供了一种自动回收内存的机制,这对于我们开发人员来说,再友好不过了。
堆栈(Stack)数据结构也是常用的数据结构之一,但是官方建议使用 Deque 这种双边队列才替代之,所以,本文就对 Deque 这种数据结构进行详细地剖析下。
HashMap 这个数据结构,不管是日常开发,还是求职面试,它始终都是所有 Java 程序员绕不开的宿命,所以还是决定写篇文章来详细剖析下 HashMap 这个数据结构,探探期间到底有多少奥秘。
有时候程序代码的漏洞会导致服务器 CPU 占用过高,这类问题往往处理起来会比较棘手,本文使用一个浅显的案例来介绍几种排查 CPU 占用过高问题的工具,这些工具都是很强大并且很有效的,比如 Arthas 等。
将 Word 转 pdf 的时候,有很多工具可以使用,其中有一款很不错的工具“Aspose”,可惜是收费软件,但是不打紧,我们就使用一点点小手段crack之,安排。
synchronized同步锁共有四种状态,引入多种状态的根本目的就是为了减少获得锁和释放锁带来的性能消耗,本文对这四种状态的转换进行了简述。
此文旨在介绍 double 这种浮点型数值在进行计算的过程中产生的精度问题,并介绍十进制的小数和二进制之间的转换。