首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 内存申请分析

    作者:amritazhou 最近一直在做有关内存方面的优化工作,在做优化过程,除了关注内存申请量以及GC情况之外,我们经常需要想方法找出是那些对象占用了大量内存,以及他们是如何导致GC,这意味着我们需要获取对象申请信息...,可以看到申请对象大小,数量,还有堆栈等,通过这些信息,我们可以作为我们接下来进行内存优化参考 但是,对于这种获取申请对象信息方法,会存在几个问题: 1、获取信息过于分散,中间夹杂着不少其他信息...: 从上面的代码可以看出,在开启了Allocation Tracker之后,在Dalvik全局变量gDvm下,将其中allocRecords指向了一块新申请内存区域,另外allocRecordHead...: 1、在收到Allocation Tracker请求时候,首先给Dalvik全局变量gDvm中allocRecords字段指向一段新申请内存申请内存大小,由gDvm.allocRecordMax...指定; 2、后续Dalvik每次新申请对象时候,只要allocRecords不为NULL,那就会不断往allocRecords指向内存区域中写入申请对象信息,包括类型,大小,线程号,堆栈。

    1.6K00

    探秘malloc是如何申请内存

    今天分析下malloc申请内存时都发生了什么,Let dot it 我们都清楚malloc申请内存不是立刻就建立虚拟地址和物理地址映射,当int *p = malloc(100*1024)执行这条指令之后...有人就会说malloc为啥不属于heap? 当malloc申请内存小于128K时候是属于heap,自己可以动手实验下。当申请内存大于128K之后,就会从mmap区域申请内存。...当写malloc申请内存0x76143BC000时候,就会发生缺页异常,发生page_fault。...return ret; } 如果pmd里面的值是NULL,所以pte不存在,设置pte为NULL 判断此vma是否是匿名页,通过判断vma→vm_ops是否为NULL, 啥是匿名页: malloc申请内存...stack里申请内存 mmap申请匿名内存映射 以上三种都属于匿名页 很明显我们是malloc申请内存,就会走到匿名页里面去 如果不是匿名页,那就是有文件背景页,就是和映射时候有对应实体

    2.3K51

    Kmalloc申请内存源码分析

    本节我们重点分析下Kmalloc实现,其实在驱动中大家使用最多就是用kmalloc申请内存,kmalloc申请内存大小都普遍比较小,比较快,而且物理地址和虚拟地址是线性映射,因为kmalloc拿到内存是从...2个参数,第一个参数就是要申请大小,第二个参数就是申请内存一些flag,比如常见GFP_KERNEL 大家也看下注释都有哪些flag,这些flag都代表啥意思,是否可以睡眠,是否是原子操作等 __...也就是申请太大内存,就不用直接找我slab了,直接去找buddy拿吧 通过kmalloc_slab去获取对应大小kmem_cache缓冲池 调用slab_alloc从对应kmem_cache中去申请一个...所以说来说去,还是从slab去申请内存,里面的内存就和上一节内存一样了。 如果size大于4K,每个平台,每个版本,每个slab实现大小不一样。...缓冲池 如果申请内存是从DMA ZONE去申请,就从kmalloc_dma_caches中去找对应kmalloc_cache缓冲池 static void __init new_kmalloc_cache

    2.1K20

    Linux申请大页内存(mmap)

    当多个内存密集型应用访问内存时,会造成过多TLB未命中,因此在特定情况下会需要减少未命中次数,一个可行办法就是增大每个页尺寸。...---- 2.怎样使用大页内存 2.1 先预留一定量大页内存 #先查看系统有多少已经预留大页内存 # cat /proc/meminfo |grep -i huge #预留192个大页 # sysctl...vm.nr_hugepages=192 #查看是否预留成功 # cat /proc/meminfo |grep -i huge 2.2 通过系统调用来从预留大页内存申请大页 #include <sys...\n"); getchar(); munmap(m, s); return 0; } ---- 3.最后的话 大页内存好处不仅是减少TLB未命中次数,而且大页内存分配是物理内存,不会被操作系统内存管理换出到磁盘上...,因此不会出现缺页中断,也就不会引入访问磁盘时延,另外,大页内存在物理上是连续,对于大内存访问也有一定加速效果。

    11.7K110

    linux服务器磁盘扩容方法

    如果你linux服务器磁盘不够用了,那就需要给磁盘扩容了,下面我们介绍一下linux服务器磁盘扩容方法 1、系统环境如下图: 图片.png 2、为该系统添加一块新虚拟硬盘,...添加后需重启虚拟机,否则系统不识别;如下图,/dev/sdc 是新添加硬盘; 图片.png 3、fdisk /dev/sdc为新硬盘创建分区: 图片.png 4、linux...允许主分区为4个,则我们创建分区为 /dev/sdc1 5、默认情况下新建分区格式为linux,我们使用lvm动态添加磁盘空间,故需要修改 /dev/sdc1 分区格式为lvm,lvm格式id为...mkfs.ext3  /dev/sdc1 7、执行完成进入/etc 目录下查看是否存在sdc1文件夹,如果不存在,则执行命令partprobe;再执行格式化命令; 8、添加新lvm到已有的lvm组,实现扩容...        查看卷容量 (6)lvm>quit  9、扩容文件系统:resize2fs /dev/mapper/volgroup00-logvol00

    4.5K10

    Java通过JNI申请直接内存

    函数申请内存, 主要就是要观察在Java中, 堆外内存/直接内存申请方式, 以及如何被管理....在Java中可以通过使用ByteBuffer.allocateDirect() 和 unsafe.allocateMemory() 以及本文介绍通过JNI申请内存, 这三种方式区别是什么呢?...重新生成.so动态库并拷贝到/usr/lib/目录下 重新执行测试类, 结果如下 使用more /proc/4341/maps查看进程内存布局 两个区间都是32MB, 与我们申请吻合 哎,在这里我们看到使用...mmap申请内存, 我们拿到起始地址就是maps中显示地址, 是吻合....而Java方式拿到地址, 还是一样, 偏差了0x10 简单说, malloc底层调用mmap系统函数申请内存(还有一种是brk系统函数), 只是malloc又对从操作系统拿到内存做了手脚, 之所以做手脚是为了合理管理内存

    1.3K30

    Win3内存管理之私有内存跟共享内存申请与释放

    一丶内存简介私有内存申请   通过上一篇文章.我们理解了虚拟内存与物理内存区别. 那么我们有API事专门申请虚拟内存与物理内存. 有私有内存跟共享内存....私有内存意思就是这块内存申请只在本进程物理页当中. 共享内存就是这个物理页 A B两个进程都可以使用....但是我们知道物理内存是一个页.所以申请一个页即可. DWORD flAllocationType, 申请内存类型. 是这样.我们申请内存在物理页....DWORD flProtect 内存状态.我们申请内存状态是可读 还是可写. 还是可读写. virtualAllocEx 是远程内存申请.就是说我们可以通过指定进程....给这个指定进程申请内存. new malloc区别. 请注意.真正申请内存其实是API. 而new malloc 是申请内存.

    1.4K20

    服务器存储扩容详解

    环境说明 Linux操作系统:CentOS Linux release 7.6.1810 (Core) 平台环境:腾讯云CVM,CBS 本教程相关视频教程:腾讯云大学-云服务器存储扩容 ---- 1....,原有100G空间不够用了,将空间扩容至200G,CBS是腾讯云提供用于云服务器持久性数据块级存储服务,云盘具有弹性,按需扩容特性,云盘可以任意按需扩容。...Linux云服务器存储扩容 2.1....,现在控制台中做好快照,并扩容,然后登录到操作系统中完成分区和文件系统扩容,如下以扩容至200G为例演示在MBR格式磁盘分区扩容方法 1、 检查磁盘扩容,确认扩容方式,根据System类型为Linux...:https://cloud.tencent.com/document/product/362/6738 Windows云服务器存储扩容:https://cloud.tencent.com/document

    30.9K94

    聊聊C语言中malloc申请内存内部原理

    原因有以下两个 系统调用管理内存粒度太大。系统调用申请内存都是整页 4KB 起,但是我们平时编程时候经常需要申请几十字节小对象。如果使用 mmap 未免碎片率也太大了。...其思想都和内核自己用 SLAB 内存分配器类似。都是内存分配器预先向操作系统申请一些内存,然后自己构造一个内存池。当我们申请内存时候,直接由分配器从预先申请内存池里申请。...当需要申请内存块,但是没有大小合适时候,会将大 chunk 拆成多个小 chunk。如果申请内存时候,而系统中又存在大量小 chunk 时候,又会发生合并,以降低碎片率。...1 如果申请字节数小于 fast bins 管理内存块最大字节数,则尝试从 fastbins 中申请内存申请成功就返回 2 如果申请字节数小于 small bins 管理内存,则尝试从 smallbins...中申请内存申请成功就返回 3 尝试从 unsorted bins 中申请内存申请成功就返回 4 尝试从 large bins 中申请内存申请成功就返回 5 如果前面的步骤申请都没成功,尝试从 top

    40010

    服务器硬盘扩容后可以取消吗 如何扩容硬盘呢?

    众所周知服务器硬盘是可以扩展容量,随着服务器工作内容增加,本身挂载硬盘内存或者空间不足,就需要来扩展容量来保障系统正常运行。...每种服务器系统内存扩展方式是不太一样,及时扩展容量,对于服务器效率和性能会有更大益处。云服务器硬盘扩容后可以取消吗? 云服务器硬盘扩容后可以取消吗?...云服务器挂载硬盘之所以需要扩容,是因为空间不足,或者数据信息量增大需要增加存储空间。扩容硬盘空间也是一个非常复杂专业化步骤,那么云服务器硬盘扩容后可以取消吗?按照常理来说,硬盘扩容后是可以取消。...前面了解过云服务器硬盘扩容后可以取消吗?那么如果需要扩容硬盘时候步骤是怎样呢?在进行硬盘扩容时候,首先要登录服务器后台管理中心,进行身份认证之后,就可以在后台控制中进行操作。...以上就是云服务器硬盘扩容后可以取消吗相关内容,硬盘扩容对于一些特殊情况是非常有必要。因此多了解一些关于如何扩展内存和扩展硬盘内容,会对以后问题有所帮助。

    7.5K50

    服务器硬盘扩容是否能合并 云硬盘扩容方法

    服务器硬盘扩容是否能合并?有的人可不敢轻易合并,就担心会造成数据丢失现象,那么是否真的如此呢?...云服务器硬盘扩容是否能合并 对于云服务器硬盘扩容是否能合并这个问题,其实是完全可以实现,而且操作方式很简单。首先建议大家做好数据备份,因为的确不排除会出现重要数据可能性。...云硬盘扩容方法 云服务器硬盘扩容是否能合并答案很显然是肯定,但注意事项也需要大家铭记,还有就是云硬盘扩容方法,其实可以分为以下几种。...第二种是先对云盘进行分区然后再扩容,其实是不推荐,因为可能会终端业务,操作也比较复杂,数据可能会有损失现象。最后一种适合在自建服务器环境里使用,多分区混合为一个分区后扩容。...以上就是关于云服务器硬盘扩容是否能合并相关介绍,其实扩容方式不局限于一种,而合并也不是在任何情况下都适合做

    6.1K10

    申请内存时底层发生了什么?

    ---- 内存申请释放对程序员来说就像空气一样自然,你几乎不怎么能意识到,有时你意识不到东西却无比重要,申请过这么多内存,你知道申请内存时底层都发生什么了吗?...现在我们知道了,如果malloc自己维护内存空间不足将通过brk系统调用向操作系统申请内存。这样malloc就可以把这些从操作系统申请内存当做新空闲内存块分配出去。...我们看到冰山是这样:我们向malloc申请内存,malloc内存不够时向操作系统申请内存,之后malloc找到一块空闲内存返回给调用者。...所谓虚拟内存就是假、不是真正物理内存,虚拟内存是给进程用,操作系统维护了虚拟内存到物理内存映射,当malloc返回后,程序员申请内存就是虚拟内存。...brk执行结束后返回到malloc,从内核态切换到用户态,malloc找到一块合适空闲内存后返回 程序员拿到新申请内存,程序继续 当有代码读写新申请内存时系统内部出现缺页中断,此时再次由用户态切换到内核态

    67510

    玩转服务器---申请SSL证书

    SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道,即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间加密传输,可以防止数据信息泄露,保证了双方传递信息安全性,而且用户可以通过服务器证书验证他所访问网站是否是真实可靠...这么说起来好像有点复杂,其实往简单了说的话,其实就是http协议与https协议区别。申请SSL证书绑定到已经备案成功域名之后,就可以通过https协议进行访问。可以提高我们网站数据安全性。...申请SSL证书 进入腾讯云控制台,进入SSL证书申请界面 ? 域名填写已经备案成功域名,然后填写个人邮箱,点击进入下一步。 ? 选择自动DNS验证,点击确认申请。 ?...我们可以在SSL证书管理界面查看我们申请证书信息。 ? 如果证书状态为已颁发状态,那代表证书已经审核通过,可以在服务器开启SSL服务。然后重启服务器,即可让配置生效。...nginx服务器配置SSL 选择要使用证书,点击右侧下载证书文件包并进行解压缩。 ? 可以看到针对不同服务器证书证书文件与私钥文件是有区分开。我这里主要以nginx服务器为示例。

    3.3K30

    如何扩容单台服务器存储容量?

    作者个人研发在高并发场景下,提供简单、稳定、可扩展延迟消息队列框架,具有精准定时任务和延迟队列处理功能。...写在前面 最近收到监控系统报警,一看是服务器磁盘存储超出了阈值。此时第一时间想到就是要给服务器扩容了,说到服务器扩容,其实没有小伙伴们想那么复杂。...简单点来说,服务器扩容可以分为两种:一种是增加服务器数量;另一种是增加单台服务器存储。今天,我们就来说说如何增加单台服务器存储容量。...文章已收录到: https://github.com/sunshinelyz/technology-binghe https://gitee.com/binghe001/technology-binghe 服务器扩容...Linux硬盘识别: 一般使用”fdisk -l”命令可以列出系统中当前连接硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动服务器,以root用户登录

    1.5K20
    领券