问题标签 [memory-pool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 您如何声明和使用重载的池运算符删除?
我想知道如何使C++-FAQ-lite 的第 11.14 节适应数组。
基本上,我想要这样的东西:
但是,我无法弄清楚声明和调用 this 的正确语法operator delete[] (pool)
。有人可以帮忙吗?
c - 每个实例的内存池比每种类型的内存池有缺点吗?
我正在 C 中为实时应用程序实现一个内存池。程序的实时线程使用容器数据结构来处理需要从容器中添加和删除的特定类型的数据。容器的实现被设计成每个实例都有自己的个人内存池。(虽然数据在实时线程中处理,但容器的实际创建发生在另一个线程中)。
由于在程序启动时将不知道容器数据结构的数量,因此这种按实例模型的优点是只使用所需的内存 - 限制容器可以容纳的最大数据量是相当合理的,但是限制容器的数量是相当随意的。
但是每个实例的内存池有缺点吗?
c++ - Designing and coding a non-fragmentizing static memory pool
I have heard the term before and I would like to know how to design and code one.
Should I use the STL allocator if available?
How can it be done on devices with no OS?
What are the tradeoffs between using it and using the regular compiler implemented malloc/new?
c# - Which object pool backing store to choose?
In our C# (.NET 4.0) application, we allocate and de-allocate a lot of memory, in different size chunks. We want to move to an object pool, to improve performance.
We implemented an object pool already and saw some performance improvement. We're currently using a stack-based backing store. Other possible alternatives are, queue based store, ConcurrentBag<> based store, List<> based store, etc.
I guess the choice of backing store really depends on the application's characteristics, so we're now in the process of implementing the object pool with all these different backing stores and testing the performance.
However, I'd really like to hear your thoughts on pros and cons of different backing stores for object pooling.
Thanks
c++ - 非阻塞线程安全内存池实现
我需要一个简单的非阻塞静态块大小内存池。我在网上没有找到这样的。所以每个需要这种解决方案的人。这个是免费的……只适用于 Win32。
最好的祝福,
弗里德里希
还有 CompareAndSwap
c++ - 通过子类化的 C++ 内存池
因此,我正在研究一种方法来轻松地对 c++ 对象进行内存池,只需对需要池化的类进行最少的修改。
内存池本身是您可以在任何地方找到的标准品种,但我已经制作了这个类:
用法:
我想将 returnMemory 调用(基本上释放池的一部分)放在 delete 运算符中,但不知道如何从 void* 参数中获取实际池的地址。
相反,我通过将它放入析构函数来解决。我认为构造函数要求使用池分配类,这意味着销毁总是意味着随后将取消分配。
这是第一个可行的解决方案,使用起来非常方便。但是,这样做可能是不好的风格,我很好奇是否有更好的解决方案。
有人知道吗?
java - Java 上的垃圾太多问题
我有一个应用程序,基本上,创建一个新的字节数组(小于 1K)在几秒钟后存储一些数据(通常少于 1 分钟,但一些数据存储长达 1 小时)写入磁盘,数据将进入垃圾。每秒创建大约 400 个数据包。我读过一些文章说不用担心 GC,尤其是快速创建和释放的内存部分(在 Java 6 上)。GC 运行时间过长导致我的应用程序出现一些问题。我设置了一些 GC 参数(更大的 XMX 和 ParalelGC),这减少了 Full GC 时间减少但还不够。我有两个想法,我是关注 GC 参数还是创建字节数组内存池机制?哪一个更好?
c++ - 如何实现可变大小的缓存对象以减少 C++ 中的内存分配?
在表演之前人们把我的脑袋扯下来:是的,在问这个之前我已经做了分析:)
我再次查看我的容器类型之一,虽然我有一个可行的解决方案,但性能很差,因为缓存的每种类型的项目都会导致堆上的单独分配(这当然很昂贵)。
基于对我的程序输入的静态分析,我想出了一种方法来了解所有可能放入我正在传递的缓存对象中的对象所需的总大小。基本上,我有一个可以在给定缓存对象中构造的对象列表,所以我知道我可能需要缓存的大小是多少,但不是在编译时——仅在运行时。
基本上,我想做的是boost::make_shared
——获取一个内存块,并shared_ptr
在同一个内存块中构造位以及受控对象。
我不必担心保留复制行为,因为缓存对象是不可复制的,并且由客户端通过指针传递(它通常存储在 aptr_vector
或 a之类的东西中std::auto_ptr
)。
但是,我不熟悉如何实现这样的容器,即如何遵循对齐限制等。
在伪代码中,我想做的是:
我的一般概念在这里合理吗?有没有更好的方法来做到这一点?
c# - How to get the pointer to the middle of an array in c#
First, basic info on our environment: We're using c# .net 4.0, on Win7-x64, targeting 32-bit.
We have a preallocated -large- array. In a function, we would like to return a pointer to an arbitrary point in this array, so that the calling function can know where to write. Ex:
Essentially, we want to preallocate a big chunk of memory, and reserve arbitrary length portions of this memory block and let some other class/function to use that portion of memory.
In the above example, getEmptyPtrLocation function is incorrect; it is declared as returning Byte[], but attempting to return a single byte value.
Thanks
c++ - 如何在不使指向它的指针无效的情况下增加缓冲区?
术语“池”和“缓冲区”在这里可以互换使用。
假设我有一个我想在程序开始时分配的池,而不是一直调用new
。
现在,我不想人为地限制自己池的大小,但是如果我重新分配一个更大的池,所有指向旧池的指针都会失效,这当然不是很酷。
我想到的一种方法是“分页”,又名
并分配一个新页面,而不是只重新分配一个页面。这将使所有指针保持有效,但会使分页池的管理更加困难。另外,我限制自己的页数,所以最后再次限制池的大小。
另一种方法是从我的分配函数返回的指针映射到指向实际内存空间的指针。这将使所有旧指针保持有效,但会占用更多内存,并且我需要编写一个智能指针以从执行映射的分配函数返回。
还有哪些其他可能的方法来实现我想要的?在上面的示例实现中,我错过了哪些(不利)优势?