首页 > 数据库 >使用Redis时的vm.overcommit_memory内存分配控制

使用Redis时的vm.overcommit_memory内存分配控制

时间:2023-07-01 16:34:34浏览次数:41  
标签:overcommit linux Redis vm 内存 memory 分配

最近在使用Redis的时候遇到了linux系统中的vm.overcommit_memory参数设置,对此不是很了解,于是研究了一下,有了本文。

 

=====================================

 

一个尝试,如何在内存中申请空间:

>>> 100000*400000*8/1024/1024/1024
298.0232238769531

 

实际代码:

import numpy as np

x=np.zeros((100000,400000))

运行情况:

运行上面的代码后执行top命令,发现该进程的内存空间并没有明显变大,可以说x变量申请的298G空间并没有被分配,那么如何使内存真正被分配呢,给出下面的代码:

import numpy as np

x=np.zeros((100000,400000))

x+=0.0001

运行情况:

该代码的执行可以通过top命令发现确实有298G的内存空间被分配。

 

从上面的这个操作可以知道,在linux系统中系统真正的分配内存并不是在你申请的时候,而是在你初始化的时候。比如你使用C语言中的malloc申请内存,但是此时你所获得的是操作系统分配给你的虚拟地址,而此时这部分内存并没有真正的分配给你,要理解这个操作就需要对操作系统的虚拟地址和真实地址有一定的了解。

 

关于overcommit_memory与linux内存分配参考:

https://blog.51cto.com/u_13875041/5877796

 

 

-----------------------------------------------------------------------

 

查询linux系统的overcommit设置:

cat /proc/sys/vm/overcommit_memory

 

 

===============================================

 

参考:

https://blog.csdn.net/weixin_42073629/article/details/117170686

 

标签:overcommit,linux,Redis,vm,内存,memory,分配
From: https://www.cnblogs.com/devilmaycry812839668/p/17519474.html

相关文章

  • 一天吃透Redis面试八股文
    内容摘自我的学习网站:topjavaer.cnRedis连环40问,绝对够全!Redis是什么?Redis(RemoteDictionaryServer)是一个使用C语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis的数据是存在内存中的,所以读写速度非常快,被广泛应用于缓存方向。Redis可以将数据写入磁......
  • jvm学习笔记
    1.JVM快速入门从面试开始:请谈谈你对JVM的理解?java8的虚拟机有什么更新?什么是OOM?什么是StackOverflowError?有哪些方法分析?JVM的常用参数调优你知道哪些?内存快照抓取和MAT分析DUMP文件知道吗?谈谈JVM中,对类加载器你的认识?​ 位置:JVM是运行在操作系统之上的,它......
  • 关于lvm磁盘管理-单个磁盘分区PV的扩容
    在lvm磁盘管理中,vg由一个或者多个pv组成,到最后的系统分区则是由vg中创建出来的lv如果vg的空间不够了、我们可以有两种方式进行扩展-扩容,1、增加新的pv2、扩展-扩容现在有的PV今天笔者主要讲解一下,关于现有PV的扩容过程,PV可以由整块磁盘形成,也可以是单个分区对于整块磁盘的操......
  • redis自写工具类
    redisDao.javapackagecom.example.demo.dao;/***@Date2023/7/1-9:11*/publicinterfaceredisDao{//存储验证码booleansave(Stringtelephone,Stringcode);//获取验证码StringgetCode(Stringtelephone);//存储token......
  • kvm虚拟机相关
    一、虚拟机与宿主机鼠标不同步问题:先关闭虚拟机,想要修改鼠标和宿主机界面同步方法如下:cd/etc/libvirt/qemu;vi修改相应的xml文件;在标签下添加这行语句:inputtype=’tablet’bus=’usb’/;格式同上最后再virshdefine/etc/libvirt/qemu/**.xml(相应的xml文件);即可解决问题......
  • 一篇带你了解JVM内存模型和垃圾回收机制
    JVM内存模型根据Java虚拟机规范,Java数据区域分为五大数据区域。 JVM的结构其中方法区和堆是所有线程共享的,虚拟机栈、本地方法栈和程序计数器则为线程私有的。有的博客称方法区是永久代,那是因为前者是JVM的规范,而后者则是JVM规范的一种实现,并且只有HotSpot才有永久代,JDK8......
  • Redis Desktop Manager(Redis可视化工具)安装及使用教程
    RedisDesktopManager(Redis可视化工具)安装及使用教程2、一、工具/材料官网下载:https://redisdesktop.com/download百度网盘:https://pan.baidu.com/s/15xVRpCT8mkP2uT8PoBHT3g提取码:v727二、方法/步骤1.说明RedisDesktopManager是一款简单快速、跨平台的Redis桌面管理工具,也被......
  • JVM 性能调优
    JVM性能调优在高性能硬件上部署程序,目前主要有两种方式:通过64位JDK来使用大内存;使用若干个32位虚拟机建立逻辑集群来利用硬件资源。使用64位JDK管理大内存堆内存变大后,虽然垃圾收集的频率减少了,但每次垃圾回收的时间变长。如果堆内存为14G,那么每次FullGC......
  • 无意间做了个 web 版的 JVM 监控端前后端分离 React+Spring Boot
    本来就是为了更多的了解JMX,第一步就想把所有的MBean和属性都展示出来,开始在控制台输出,但是效果不好,内容太多太长,不够直观,然后就加了个web端的树形结构。然后做着做着突然发现,再稍微改改就能当个web版的简易监控端用了。此工具只在hotspotJVM8环境下测试过。可支持查看......
  • redis核心
    一、Redis是什么?Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、zset(sortedset--有序集合)和hash。二、Redis都有哪些使用场景?Redis是基于内存的nosql数据库,可以通过新建线程的形式进行持久化,不影响Redis单线程的读写操作通过list取最新......