#大家还记得JVM中堆的结构图吗? 图中展示了堆中三个区域:Eden、From Survivor、To Survivor。从图中可以也可以看到它们的大小比例,准确来说是:8:1:1。为什么要这样设计呢,本篇文章后续会给出解答,还是根据垃圾回收的具体情况来设计的。 还记得在设置JVM时,常用的类似-X ...
分类:
编程语言 时间:
2021-06-08 22:24:11
阅读次数:
0
上代码直接研究: int main() { int *heap_d; int *heap_e; int *heap_f; heap_d = (int *)malloc(10); heap_e = (int *)malloc(10); printf("The d address is %p\n",he ...
分类:
其他好文 时间:
2021-03-30 13:44:13
阅读次数:
0
这篇文章中讨论了,在默认情况下,ASP.NET Core程序跑在K8s的Docker中内存使用率>=600MB,导致Docker容器频繁重启。并探讨并做了将ASP.NET Core项目配置System.GC.Server设置为False后,内存小于<=150MB的实验。 这文主要讲下什么是Syste ...
分类:
Web程序 时间:
2021-02-24 13:02:39
阅读次数:
0
第 10 章 对象的实例化内存布局与访问定位 1、对象的实例化 大厂面试题 美团: 对象在 JVM中是怎么存储的? 对象头信息里面有哪些东西? 蚂蚁金服: 二面: java对象头里有什么 对象实例化 1.1、对象创建的方式 对象创建的方式 new:最常见的方式、单例类中调用getInstance的静 ...
分类:
其他好文 时间:
2020-10-12 20:07:30
阅读次数:
22
CMS的问题 Memory Fragmentation(内存碎片过多,导致启动单线程serial垃圾回收器) -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction 默认为0 指的是经过多少次FGC才进行压缩 Floatin ...
分类:
其他好文 时间:
2020-09-15 21:02:24
阅读次数:
54
1.GC回收哪些内存区域呢?堆内存对象数组方法区该类所有的额实例都已经被回收,也就是java堆中不存在该类的任何实例加载该类的ClassLoader已经被回收该类对应的java.lang.Class对象在任何地方没有被引用,也无法通过反射访问该类方法。垃圾回收性价比比较低,一般不回收废弃常量无用的类(需要同时满足以下三个条件)2.GC是如何判断垃圾对象的?1.引用计数法给对象的对象头中添加一个co
分类:
编程语言 时间:
2020-08-18 13:42:33
阅读次数:
73
1、链表是通过“指针”将一组零散的内存块串联起来的数据结构2、链表可以分为单链表、双向链表和单/双向循环链表2.1、删除链表中等于某个值的节点,单链表和双向链表的时间复杂度一样2.2、由于双向列表可以直接找到前驱结点,所以删除指定的节点,双向链表比单向链表高;同时在链表的某个指定结点前面添加一个结点 ...
分类:
编程语言 时间:
2020-07-22 02:11:20
阅读次数:
69
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交 ...
分类:
其他好文 时间:
2020-07-01 15:50:36
阅读次数:
57
实际上,这是一个编译时选项。默认会使用内部的 slab 分配器。您确实确实应该 使用内建的 slab 分配器。最早的时候,memcached 只使用 malloc/free 来管理 内存。然而,这种方式不能与 OS 的内存管理以前很好地工作。反复地 malloc/free 造成了内存碎片,OS 最终 ...
分类:
系统相关 时间:
2020-06-25 19:31:34
阅读次数:
61
连续内存分配:内存碎片与分区的动态分配 连续内存分配 内存碎片问题 第一适配 最佳适配 最差适配 压缩式碎片整理 交换式碎片整理 内部碎片问题 外部碎片 在分配单元间的未使用内存 内部碎片 在分配单元中的未使用碎片 第一适配 按地址排序空闲块列表 按顺序找到合适的分区 重分配检查能否合并分区 优势 ...
分类:
其他好文 时间:
2020-06-24 19:40:29
阅读次数:
42