Java中对象一般创建在堆内存中,在堆内存空间不足的时候,GC便会进行垃圾回收,如果过于频繁,便会影响程序的性能,所以逃逸分析由此诞生,它的目的就是判断哪些对象是可以存储在栈内存中而不用存储在堆内存中的,从而让其随着线程的消逝而消逝,进而减少了GC发生的频率,这也是常见的JVM优化技巧之一。
Java中对象一般创建在堆内存中,在堆内存空间不足的时候,GC便会进行垃圾回收,如果过于频繁,便会影响程序的性能,所以逃逸分析由此诞生,它的目的就是判断哪些对象是可以存储在栈内存中而不用存储在堆内存中的,从而让其随着线程的消逝而消逝,进而减少了GC发生的频率,这也是常见的JVM优化技巧之一。
我们知道,程序在运行的时候,为了提高性能,大部分数据都是会加载到内存中进行运算的,有些数据是需要常驻内存中的,但是有些数据,用过之后便不会再需要了,我们称这部分数据为垃圾数据。 为了防止内存被使用完,我们需要将这些垃圾数据进行回收,即需要将这部分内存空间进行释放。不同于 C++ 需要自行释放内存的机制,Java 虚拟机(JVM)提供了一种自动回收内存的机制,这对于我们开发人员来说,再友好不过了。
在处理全局异常的时候,除了过滤器层面的全局统一处理异常,有时候我们更希望对特殊的异常做一些特殊的处理,此时我们可以将异常放在 Controller 层做统一处理,这样更有利于对异常进行标准化地处理。
在日常web开发中发生了异常,往往是需要通过一个统一的异常处理来保证客户端能够收到友好的提示,此文介绍了 Spring Boot 框架下的全局异常处理方式。
最近在手动实现一套 IM 系统,关于数据传输格式的选择,犹豫了下,对比了 JSON 和 XML,最后选择了 Protobuf,本文旨在通过简单的案例阐述清楚其间的一些坑。
synchronized同步锁共有四种状态,引入多种状态的根本目的就是为了减少获得锁和释放锁带来的性能消耗,本文对这四种状态的转换进行了简述。
此文旨在介绍 double 这种浮点型数值在进行计算的过程中产生的精度问题,并介绍十进制的小数和二进制之间的转换。