首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏python3

    3-8 读写内存

    3-5 读写内存流 u本节学习目标: n了解读写内存流MemoryStream的特点 n学习如何建立内存流MemoryStream n了解读写缓存流BufferedStream n学习如何建立缓存流BufferedStream 3-5-1 读写内存流 ——MemoryStream类 类MemoryStream创建这样的流,该流以内存而不是磁盘或网络连接作为支持存储区。 可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。 内存流对象还有一些重要的属性。其中Length属性代表了内存流对象存放的数据的真实长度,而Capacity属性则代表了分配给内存流的内存空间大小。 案例学习:MemoryStream类案例 本案例您将学习到:如何通过使用内存流的属性、方法来获取内存流的占用空间信息及改变内存流空间大小。

    1.2K20发布于 2020-01-06
  • 来自专栏Spark学习技巧

    Java8内存结构的改变~

    一、JVM 内存分布 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 ? 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。 关于方法区内存溢出的问题会在下文中详细探讨。 我们现在通过动态生成类来模拟 “PermGen space”的内存溢出: ? ? 运行结果如下: ? 本例中使用的 JDK 版本是 1.7,指定的 PermGen 区的大小为 8M。 剩余空间容量的百分比,减少为分配空间所导致的垃圾收集 -XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集 现在我们在 JDK 8下重新运行一下代码段 四、总结 通过上面分析,大家应该大致了解了 JVM 的内存划分,也清楚了 JDK 8 中永久代向元空间的转换。不过大家应该都有一个疑问,就是为什么要做这个转换?

    1.4K20发布于 2019-07-15
  • 来自专栏JAVA 框架/源码学习

    redis内存满了怎么办?让你玩懂8内存淘汰策略

    我们知道redis是一个非常常用的内存型数据库,数据从内存中读取是它非常高效的原因之一,那么但是如果有一天,「redis分配的内存满了怎么办」? 增加redis可用内存 这种方法很暴力,也很好用,我们直接通过增加redis的可用内存就可以了, 有两种方式 「通过配置文件配置」 //设置redis最大占用内存大小为1000M maxmemory > config set maxmemory 1000mb redis支持运行时通过命令动态修改内存大小 这种方法是立竿见影的,reids 内存总归受限于机器的内存,也不能无限制的增长,那么如果没有办法再增加 内存淘汰策略 实际上Redis定义了「8内存淘汰策略」用来处理redis内存满的情况: 1.noeviction:直接返回错误,不淘汰任何已经存在的redis键 2.allkeys-lru:所有的键使用 redis键 5.volatile-random:随机删除有过期时间的redis键 6.volatile-ttl:删除快过期的redis键 7.volatile-lfu:根据lfu算法从有过期时间的键删除 8.

    3K30发布于 2021-04-02
  • 来自专栏数据库相关

    生产K8s Rsyslogd内存优化

    最近发现K8s机器经常有内存告警,上去抽了几台ECS 看了下都发现了rsyslogd占用大量内存的情况出现。 当容器越多是,log也就会也多,内存占用也就越多。同时也可能导致systemd-journald内存占用过高。 因此我们最好优化下journald和rsyslog的参数,将宝贵的内存资源留给业务服务去使用。 效果展示 PS: 对生产全部K8s主机rsyslogd都优化了一遍后,发现腾出了近128GB的内存,相当于又多买了一台128G的ECS。 step2、定时任务平台 从cmdb中将k8s主机列表取出来,每天下发一次 check-deploy.sh 到目标K8s机器上并执行即可(这个变更对时效性要求不高)。

    1.1K20编辑于 2022-01-11
  • 来自专栏高性能服务器开发

    8张图 带你理解Java内存区域

    很多人会误以为Java内存区域和内存模型是同一个东西,其实并不是。 Java内存区域是指 JVM运行时将数据分区域存储 ,简单的说就是不同的数据放在不同的地方。通常又叫 运行时数据区域。 Java内存模型(JMM)定义了程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。 1、Java内存区域 1.8 之前: ? 演变 那么,Java 8 中 PermGen 为什么被移出 HotSpot JVM 了? 元空间没有使用堆内存,而是与堆不相连的本地内存区域。所以,理论上系统可以使用的内存有多大,元空间就有多大,所以不会出现永久代存在时的内存溢出问题。 8、总结: ?

    54030发布于 2020-12-15
  • 来自专栏HaC的技术专栏

    8张图 带你理解Java内存区域

    很多人会误以为Java内存区域和内存模型是同一个东西,其实并不是。 Java内存区域是指 JVM运行时将数据分区域存储 ,简单的说就是不同的数据放在不同的地方。通常又叫 运行时数据区域。 Java内存模型(JMM)定义了程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。 PermGen space”,而是报 java.lang.OutOfMemoryError: Java heap space 1.7部分内容(比如 常量池、静态变量有方法区转移到了堆) 那么,Java 8 元空间没有使用堆内存,而是与堆不相连的本地内存区域。所以,理论上系统可以使用的内存有多大,元空间就有多大,所以不会出现永久代存在时的内存溢出问题。 8、总结: 参考: https://www.cnblogs.com/czwbig/p/11127124.html https://blog.csdn.net/xyh930929/article/details

    3.7K21发布于 2020-11-16
  • 来自专栏AustinDatabases

    MYSQL 8 内存使用分析到底我的内存都跑哪了

    今天公司的一个DBA 小盆友问我,测试机的MYSQL的内存满了,但是看上去MYSQL 也没有用多少内存,到底这些内存用到哪里了. 所以总结了 18 式 对MYSQL 的内存消耗,上上下下,左左右右的来一个 POP. 下面的是这台要被POP的MYSQL 8.011 内存很少,my,cnf 处于"原始部落",没有配置的状态. ? 这里PR是这个应用程序的优先级, VIRT 是虚拟内存的大小, RES 是常驻内存也是当前进程使用的内存,(不包含swap), SHR 是共享内存的大小. 通过上面的方法可以看一分钟有没有数据的获取不是从innodb_buffer_pool中获得的,如果太高则需要综合上面的信息添加INNODB_BUFFER_POOL_SIZE的内存了. 8 重复索引对于 最后曾经有人问了一个问题,我的机器的物理内存只有8G ,但我innodb buffer pool size 设置成10G 也能启动,为什么???? ?

    5.2K30发布于 2021-03-16
  • 来自专栏coding

    2018年swoole实战8-内存table

    继上篇 2018年swoole实战7-进程详解 本篇演示 swoole内存操作模块 swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。 既然称之为table, 就像表格一个由行与列组成,这点与mysql的数据表类似 以下演示内存table的基础操作 新建 table.php <? php // 创建内存表 $table = new swoole_table(1024); // 在内存表中增加列 $table->column('id', $table::TYPE_INT, 4);

    71610发布于 2018-08-02
  • 来自专栏Java编程大本营

    终于搞明白Java8内存结构

    Java8内存结构图 [75591d90-8204-4ac0-928c-7976bc19ee00.jpg] 虚拟机内存与本地内存的区别 Java虚拟机在执行时会把内存分成不同的区域,这些区域被称为虚拟机内存 ,是一张string table 静态变量 static修饰的静态变量,jdk8时从方法区迁移至堆中 线程分配缓冲区(Thread Local Allocation Buffer) 线程私有,但是不影响 方法区,Java8废弃,引入元空间! 方法区是所有线程共享内存,在java8以前是放在JVM内存中的,由永久代实现,受JVM内存大小参数限制,Java8移除了永久代和方法区,引入元空间,直接用物理内存实现。 类变量 类变量是用static修饰符修饰,定义在方法外的变量,随着java进程产生和销毁 在java8之前存放在方法区,在java8时存放在堆中 成员变量 成员变量是定义在类中,但是没有static修饰符修饰的变量

    1.3K00发布于 2021-08-28
  • 来自专栏人人都是极客

    ARMv8 内存系统学习笔记

    Shareability 设置为 non-shareable 则该段内存只给一个特定的核使用,设置为 inner shareable 或 outer shareable 则可以被其它观测者访问(其它核、 (CPU 核、DSP、DMA 设备)能看到一个内存地址的同一份拷贝的“点”,一般是主存。 Memory consistency ARMv8-A 采用弱内存模型,对 normal memory 的读写可能乱序执行,页表里 可以配置为 non-reordering(可用于 device memory Normal memory:RAM、Flash、ROM in physical memory,这些内存允许以弱内存序的方式访问,以提高性能。 典型的 rel-acq ordering 的使用场景是 mutex 或 spinlock,当释放锁的时候,释放之前的临界区的内存访问必须都保证对同时获取锁的观测者可见。

    90720编辑于 2023-09-11
  • 来自专栏技术让梦想更伟大

    FreeRTOS系列第8篇---FreeRTOS内存管理

    ,需要的内存是从一个静态数组中分配的,意味着这种内存分配通常只是适用于那些不进行动态内存分配的应用。 HeapRegion_t在portable.h中定义,如下所示: typedef struct HeapRegion { /* 用于内存堆的内存块起始地址*/ uint8_t /* 在内存中为内存堆分配两个内存块.第一个内存块0x10000字节,起始地址为0x80000000, 第二个内存块0xa0000字节,起始地址为0x90000000.起始地址为0x80000000的内存块的 起始地址更低,因此放到了数组的第一个位置.*/ const HeapRegion_t xHeapRegions[] = { { ( uint8_t * ) 0x80000000UL, 0x10000 }, { ( uint8_t * ) 0x90000000UL, 0xa0000 }, { NULL, 0 } /* 数组结尾. */ }; /* 向函数

    1.5K20发布于 2020-07-16
  • 来自专栏XINDOO的专栏

    Agent设计模式——第 8 章:内存管理

    有效的内存管理对于智能 Agent 保留信息至关重要。与人类类似,Agent 需要不同类型的内存才能高效运行。本章深入探讨内存管理,特别关注 Agent 的即时(短期)和持久(长期)内存需求。 Agent 内存通常分为两大主要类型: 短期内存(上下文内存): 类似于工作记忆,保存当前处理或最近访问的信息。对于使用大语言模型(LLM)的 Agent,短期内存主要存在于上下文窗口中。 因此,Agent 需要独立的内存类型来实现真正持久性、从过往交互中调用信息并建立持久知识库。 长期内存(持久内存): 作为 Agent 跨各种交互、任务或延长期间所需信息的存储库,类似于长期知识库。 每当 Agent 预期基于过去成功、失败或新获得信息进行学习或适应时,实现内存管理 视觉摘要 ** ** 图 1:内存管理设计模式 关键要点 快速回顾内存管理的核心要点: 内存对于 Agent 跟踪事物 、学习和个性化交互至关重要 对话式 AI 依赖单个聊天中即时上下文的短期内存和跨多个会话持久知识的长期内存 短期内存(即时信息)是临时的,通常受 LLM 上下文窗口或框架传递上下文方式的限制 长期内存

    82510编辑于 2025-10-27
  • 来自专栏凯哥Java

    Java内存管理-JVM内存模型以及JDK7和JDK8内存模型对比总结(三)

    1:1) 老年代 永久代 (jdk 8已移除永久代,下面会讲解) 图片 1) 堆是JVM中所有线程共享的,因此在其上进行对象内存的分配均需要进行加锁,这也导致了new对象的开销是比较大的 (2) Sun 三、JDK7和JDK8的JVM内存模型的总结 1、方法区变化 这里介绍的是JDK1.8 JVM内存模型。 1.8同1.7比,最大的差别就是:元数据区取代了永久代,就是JDK8没有了PermSize相关的参数配置了。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。 贴一张 Java 8内存模型图: 四、总结 运行时区域大概了解后,我们在来总结一下: | 运行时区域 | 异常 | 主要原因 | | -------------------- | -------- 五、参考内容 《深入理解Java虚拟机》 JDK1.8 JVM内存模型 Java内存区域与内存溢出异常(jdk 6,7,8) 对于JVM内存模型的理解(对比jdk1.7与1.8) https://www.cnblogs.com

    2.2K21编辑于 2022-12-15
  • 来自专栏原创分享

    v8的堆内存初始化

    在V8::Initialize里对堆进行了初始化 // Setup the object heap ASSERT(!Heap::HasBeenSetup()); if (! 还没分配内存 if (! ,并初始化管理内存的对象 if (! heap-capacity", Capacity())); LOG(IntEvent("heap-available", Available())); return true; } 我们知道v8的堆是分为新生代 ReserveInitialChunk函数最后返回分配的虚拟内存首地址。这块内存就是V8的堆内存,即新生代、老生代、大对象等堆内存都在上面。

    97720发布于 2019-11-24
  • 来自专栏武军超python专栏

    2018年8月26日python内存分析

    检查内存条,如果坏了,更换内存条  2、双内存不兼容的问题。     使用同品牌的内存或只用一条内存 3、机箱内部散热的问题。     加强机箱内部的散热 4、硬盘有问题。             杀毒 8、杀毒软件与系统或软件冲突。 ,然后需要执行的py文件再向 python解释器申请内存,解释器申请内存是防止程序运行过程中大量的使用内存导致系统因为内 存不足而死机和崩溃 内存分析和处理: 为了提高内存的运行效率,解释器将内存分成了不同的分区 ,不同类型的 数据放在不同的分区中去运行,四个分区如下 stack:栈内存区 heap: 堆内存区   n堆,堆积 static:常量区/静态区 data:数据区/方法区 熟悉内存中的原理会增强程序员写代码时的第六感 (2变是具有相同数据的可变数据类型对象指向的内存地址是不一样的) PYTHON 中的一切都是对象,可以通过 id()函数查询对象在内存中的地址数据 可变数据类型是在定义了数据之后,修改内部的数据,内存地址不会发生变化

    1.1K40发布于 2018-09-27
  • 来自专栏采云轩

    V8 引擎垃圾回收与内存分配

    V8 垃圾回收,是不是厉害多了(摸了摸越来越没有阻力的脑袋)。 内存分配 栈 简单说,栈内存,小且存储连续,操作起来简单方便,一般由系统自动分配,自动回收,所以文章内所说的垃圾回收,都是基于堆内存。 堆 堆内存,大(相对栈来说)且不连续。 V8内存分类 在讲内存分配之前,先了解一下弱分代假说,V8 的垃圾回收主要建立在这个假说之上。 所以在清除完之后,新生代中对象,再一次分配到老生代并且内存不足的时候,会优先触发标记整理(mark-compact), 在标记结束后,他会将可达对象(黑色),移到内存的另一端,其他的内存空间就不会被占用 最后一句 终于,写完了,本来想着写的更详细一些,但是那样篇幅会很大,下次吧,有机会的话再写写 V8 执行的过程或者 V8 创建对象都干了些啥玩意什么什么的,其实 V8 引擎(或者各个 JS 引擎)这个东西太庞大了

    84020发布于 2021-01-04
  • 来自专栏云原生实验室

    k8s 内存泄露?证书过期?盘他!

    随着微服务的不断推进,使用 k8s 集群越来越多,越来越深入,随之而来会遇到一系列的问题,本文向大家介绍实际使用 k8s 遇到的一些问题以及解决方法。 问题一:修复 K8S 内存泄露问题 问题描述 一. 当 k8s 集群运行日久以后,有的 node 无法再新建 pod,并且出现如下错误,当重启服务器之后,才可以恢复正常使用。 这时候你的 k8s 集群可能就存在内存泄露的问题了,当创建的 pod 越多的时候内存会泄露的越多,越快。 二. /kubepods/memory.kmem.slabinfo: Input/output error 则说明不存在内存泄露的情况 如果存在内存泄露会出现 slabinfo - version: 2.1 /kubernetes:/usr/local/gopath/src/k8s.io/kubernetes build-k8s:centos-7.3-go-1.12.9-k8s-1.15.3 bash

    82730发布于 2021-06-09
  • 来自专栏盛开在夏天的太阳

    8.JVM内存分配机制超详细解析

    jdk8默认使用的就是TLAB的方式分配内存。 把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块内存。 JVM内部会将对象的读取信息按照8个字节对齐。至于为什么要按8个字节对齐呢?这是计算机底层原理了,经过大量的实践证明,对象按照8个字节读取效率会非常高。也就是说,最后要求字节数是8的整数倍。 类型指针占了8位 String对象原来占用4位,不压缩是8位 Object对象原来占用4位,不压缩占用8位 从现象上可以看出压缩和不压缩的区别。那么为什么要进行指针压缩呢? ,jvm会直接去除高32位地址,即使用低虚拟地址空间 4.堆内存大于32G时,压缩指针会失效,会强制使用64位(即8字节)来对java对象寻址,这就会出现1的问题,所以堆内 存不要大于32G为好. jdk8默认使用的就是TLAB的方式分配内存

    1.8K31发布于 2021-10-15
  • 来自专栏后端云

    k8s OOMkilled超出内存限制的容器

    运行增大服务器内存压力测试脚本 #! 只要节点有足够的内存资源,那容器就可以使用超过其申请的内存,但是不允许容器使用超过其限制的 资源。如果容器分配了超过限制的内存,这个容器将会被优先结束。 如果容器持续使用超过限制的内存, 这个容器就会被终结。如果一个结束的容器允许重启,kubelet就会重启容器。 比如上面的yaml文件中上限是200M,内存加压超过200M后,pod会触发OOMKilled被中止,重新创建一个新的pod。 _116a11b8-9b4b-11ea-a000-04bd7053eff0_1变成了 k8s_mem-nginx-container_mem-nginx_default_116a11b8-9b4b-11ea-a000

    7.7K20发布于 2020-06-11
  • 来自专栏云原生搬运工

    K8S 容器调大共享内存(shm)

    操作背景共享内存或 shm 是在不同进程之间共享的一段内存。这是一种在进程之间传递数据的高效方式,特别是对于需要高速数据传输的应用程序。在容器中,共享内存大小默认设置为 64MB。 但是在日常使用中如果业务逻辑重度依赖共享内存,比如游戏互动业务场景,64MB显然是不够的,可能需要调大 shm。 如何操作想要调大 K8S 容器中的共享内存大小,挂载 Memory 类型的临时存储即可, 如下图示例:当启用SizeMemoryBackedVolumes特性门控时, 你可以为基于内存提供的卷指定大小。 如果未指定大小,内存提供的卷的大小根据节点可分配内存进行调整。

    3.3K94编辑于 2023-09-12
领券