0%

在 JVM 运行时数据区域中,程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。垃圾回收主要是针对 Java 堆和方法区进行。

一、判断对象状态

JVM 在回收一个对象时,首先要判断这个对象的状态,如果判断对象为无效的(没有被任何对象或变量引用),则需要被 JVM 垃圾回收器回收。

1.1 引用计数算法

给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数不为 0 的对象仍然存活。

阅读全文 »

一些零碎的知识点总是似懂非懂,用法老是模棱两可,每次都要去网络上查询,长时间不用又忘记了。比如 Java 中的位运算。今天抽空归纳总结一下,加强一下记忆。

一、原码、反码和补码

1.1 原码

一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为 0, 负数为 1。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如 8 位二进制:

1
2
[+1] 原 = 0000 0001
[-1] 原 = 1000 0001

第一位是符号位,因为第一位是符号位,所以 8 位二进制数的取值范围就是:[1111 1111 , 0111 1111],即:[-127 , 127]

阅读全文 »

SQL 标准定义了 4 类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。

一、SQL 事务隔离级别说明

1.1 Read Uncommitted(读取未提交内容)

在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

阅读全文 »

Java 的内存区域划分绝不仅仅只是堆内存(heap)和栈内存(Stack),实际上 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为以下几个数据区域:程序计数器、Java 虚拟机栈、本地方法栈、堆、方法区、运行时常量和直接内存。如下图所示:

Runtime DataArea

阅读全文 »

记录备忘一下 Mac 系统下一些实用的小工具

收费

  • Bartender : 菜单栏管理工具,可以将菜单放进 Bartender 的二级菜单
  • SizeUp : 实用分屏小工具
  • Proxifier : 配合 ss/ssr 可以实现真正的全局代理软件
  • iStat Menus : 能够在系统菜单栏实时监控 CPU、内存、硬盘、网络、温度、电池以及系统时间等
  • CleanMyMac : 系统清理工具,可以清除 mac 系统多余的语言包、系统缓存、应用程序等
  • KeyCue : 快捷键辅助工具,忘记一些快捷键的时候按住 Command 就会出现快捷键大全的菜单
  • Araxis Merge : 可视化文件合并以及数据同步工具
  • BetterZip : 功能非常强大的压缩解压缩软件
  • Parallels Desktop : 最佳Mac虚拟机解决方案
阅读全文 »
Title - Artist
0:00