内部碎片:分配给某些进程的内存区域中,如果有些部分没有用上; 外部碎片:是指内存中的某些空闲分区由于太小而难以利用; 【1】单一连续分配 只支持单道程序,内存分为系统区和用户区,用户程序放在用户区 无外部碎片 【2】固定分区分配 支持多道程序,内存用户空间分为若干固定大小的分区,每个分区只能装一道作 ...
分类:
其他好文 时间:
2020-05-31 11:23:36
阅读次数:
79
JVM 深入理解JVM(2)——GC算法与内存分配策略 Posted by Crow on August 10, 2017 说起垃圾收集(Garbage Collection, GC),想必大家都不陌生,它是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在 ...
分类:
编程语言 时间:
2020-05-30 22:00:10
阅读次数:
71
redis的每种数据类型都有起码两种底层编码 Redis 并没有直接使用这些数据结构来实现键值对的数据库,而是在这些数据结构之上又包装了一层 RedisObject(对象),每种数据类型对应一种redisObject对象 下面以Sting数据类型,来说明一下String数据类型创建的过程 typed ...
分类:
其他好文 时间:
2020-05-30 19:35:33
阅读次数:
55
相信大家在学习C语言的时候,malloc是最早遇到的几个方法之一,这里就来深入的了解下,macOS/iOS中用户空间的内存分配。 引言 首先,我们来看几个有意思的例子,以下几个在x86_64或者ARM64中的运行情况。 1 2 3 char *str = malloc(32); free(str); ...
分类:
其他好文 时间:
2020-05-28 19:35:03
阅读次数:
101
为什么JVM在Java中如此重要?首先你应该知道,运行一个Java应用程序,我们必须要先安装JDK或者JRE包。这是因为Java应用在编译后会变成字节码,然后通过字节码运行在JVM中,而JVM是JRE的核心组成部分。JVM不仅承担了Java字节码的分析(JITcompiler)和执行(Runtime),同时也内置了自动内存分配管理机制。这个机制可以大大降低手动分配回收机制可能带来的内存泄露和内存溢
分类:
其他好文 时间:
2020-05-26 10:32:58
阅读次数:
77
ByteBuf是Netty整个结构里面最为底层的模块,主要负责把数据从底层I/O读到ByteBuf,然后传递给应用程序,应用程序处理完成之后再把数据封装成ByteBuf写回I/O。所以,ByteBuf是直接与底层打交道的一层抽象。相对于Netty其他模块来说,这部分内容是非常复杂的。 ByteBuf ...
分类:
Web程序 时间:
2020-05-23 09:18:49
阅读次数:
211
1. Redis 和 memcache 的区别 1. memcache 多线程 ,redis 单线程 2. redis 支持5种数据类型,memcache只支持一种字符串类型 3. 内存管理 redis : redis使用malloc和free来进行内存分配,会导致内存碎片,加重操作系统内存管理器的 ...
分类:
系统相关 时间:
2020-05-22 17:07:41
阅读次数:
63
1. new 和 make 二者堆上分配内存,但是它们的行为不同,适用于不同的类型; new 函数分配内存,make 函数初始化; new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法 返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和 ...
分类:
其他好文 时间:
2020-05-22 14:27:41
阅读次数:
72
一.相关概念 GC需要完成三件事:1,哪些内存需要回收?2:什么时候回收?3:如何回收? Java内存运行时区域的各部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着入栈和出栈操作。 每一个栈帧中分配多少内存基本上是在类结构确定 ...
分类:
编程语言 时间:
2020-05-21 19:17:01
阅读次数:
59