Loading...
链表提供了高效的节点重拍能力,以及顺序性的节点访问方式,并且可以通过增删节点的方式来灵活地调整链表的长度。链表在Redis中应用十分广泛,比如列表的底层实现就是链表。链表及节点的实现 链表的每个节点表示如下(adlist.h):typedef stru...
如果我们需要记录用户在一年时间内每天是否登陆我们的应用这一需求该如何完成呢?如果使用普通的 key/value,每个用户要记录 365 个,当用户上亿的时候,需要的存储空间是惊人的。所幸,Redis 提供了位图数据结构,这样每天的登陆记录只占据一个位,365 天就是 365 个位,46 个字节 就可以完全容纳下,这就大大...
分配内存 在类加载检查通过后,虚拟机将为新生对象分配内存,对象所需内存大小再类加载完成后便可完全确定,为对象分配空间的任务实际上便等同于把一块确定大小的内存块从Java堆中划分出来。指针碰撞 假设Java堆中内存时绝对规整的,所有被使用过的内存都被放在一...
方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫作"非堆(Non-Heap)",目的是与Java堆区分开来。栈、堆、方法区交互关...
核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆在JVM启动的时候即被创建,其空间大小也就确定了,是JVM管理的最大一块内存空间。 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但是在逻辑上它应该是...