问题标签 [objectpool]

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.

0 投票
3 回答
273 浏览

boost - 使用 boost::object_pool 不能明确退出。我在滥用吗?

我在我的程序中使用了 boost::object_pool,但是我发现了一些问题,它无法退出。下面是代码。不要建议我使用 boost::pool。boost::pool 没问题,只讨论 boost::object_pool。有人可以帮助我吗?

该程序无法正常退出。为什么?

0 投票
2 回答
550 浏览

c++ - C++ 对象池:使用 malloc 时程序崩溃

我正在尝试制作一个简单的对象池,但我无法让它工作。使用 malloc 为模板类型的动态数组分配空间时,我的代码崩溃

我的代码:

我在网上找到的所有示例都使用固定数组和向量,但我需要在运行时分配数组。

编辑:这就是我创建它的方式:

我知道那条线会崩溃,因为如果我推荐它,它不会崩溃

0 投票
1 回答
1507 浏览

scala - 用于管理对象池的 scala-way

scala中管理对象池的首选方式是什么?

我需要创建和删除大规模的单线程对象(不需要同步)。在 c++ 中,我使用了静态对象数组。

在scala中处理它的惯用且有效的方法是什么?

0 投票
3 回答
2339 浏览

c# - 何时将对象返回到其池中

我想在我的 C# 应用程序中使用对象池,并且我知道 C# 中没有任何引用计数。如果同一个对象可以传递给多个线程,我怎么知道什么时候没有对该对象的引用,以便我可以将它返回到对象池?

本来想在dispose方法里做的,但是已经晚了,而且已经被处理掉了,无法返回池中。

0 投票
1 回答
2629 浏览

c++ - 澄清“对象池”模式?

我的印象是,anobject pool是一种设计模式,用于管理一组预先分配的对象,客户端可以请求并返回其中一个对象。但是,似乎boost.pool'sobject_pool类与对象管理相比,更多的是与较低级别的内存管理有关。为什么他们用这个名字,而不是像这样的名字memory_pool?我是不是误以为 boost 的对象池真的是一个内存池方案?或者它们本质上是一样的?另外,为什么没有更高级别的对象池模式的标准实现?

0 投票
1 回答
5150 浏览

java - GenericObjectPools borrowObject Method 线程安全吗?

在这个问题中来自 commons.apache.org 的 GenericObjectPool<T> 线程安全吗?提到它的线程安全。

编辑:但是我在我的多线程应用程序中遇到了两个线程同时从池中获取相同对象的情况。-这个语句是错误的。

我移动了 borrowObject 来同步块,它解决了我的问题。

有没有人之前遇到过这个问题?

这是我的代码:

}

0 投票
1 回答
3733 浏览

ios - 如何避免 iOS 中的堆碎片

我们的应用程序在运行时会创建很多小对象。它主要归结为自动释放的 NSString 和 NSNumber 对象。由于该应用程序设计为在后台运行“24/7”,因此堆碎片成为一个大问题。

在没有完全重组程序的情况下,有哪些技术可以避免这种情况。

我在想: - 对象池会在最终发布后将对象返回到池中,但那时对象需要是可变的。(NSMuttableString 本身会导致堆碎片吗?)

其他人如何处理这个问题?

编辑:这就是我对内存碎片产生怀疑的方式。查看 rpages 和 [vm-pageshortage]

0 投票
1 回答
2790 浏览

c++ - 请求提升池经验。作为预分配的分配器有用吗?

最近我一直在寻找一种池/分配器机制。Boost Pool 似乎提供了解决方案,但仍有一些东西无法从文档中推断出来。

需要分配什么

  1. 几个小班(〜30个字符)
  2. std::map (我想确保它不会自行执行动态分配器)
  3. pugi::xml 中的分配
  4. 标准::字符串

如何控制分配的地址空间(或只是数量)

object_pool 似乎提供了一种分配需求的好方法 1) 但是它想设置一个固定大小供分配器使用。默认情况下,它会自行获取内存。如果可能的话,我想给它可以在其中播放的地址空间。

或者:

虽然 UserAllocator 在 Boost::Pool 中可用;它似乎打败了这一点。我担心所需的控制会使其效率太低……最好从头开始。

是否可以为 pool_allocator 设置一个固定区域?

这个问题和第一个有点相似。在将 boost::pool_allocator 提供给 std-type-class (例如 map) 时,boost pool 是否提供任何方式来限制分配内存的数量/位置

我的场景

嵌入式linux编程。系统必须永远运行下去。所以我们不能冒险进行任何内存分割。目前我主要是静态分配(堆栈),但也有一些原始的“新”。我想要一个分配方案,以确保每次程序循环时我都使用相同的内存区域。速度/空间很重要,但安全仍然是重中之重。

我希望 StackOverflow 是提问的地方。我尝试联系 Boost::Pool "Stephen" 的作者,但没有成功。我还没有找到任何特定于 Boost 的论坛。

0 投票
1 回答
956 浏览

java - ArrayList 是否代表对象池模式?

我想知道是否ArrayList代表对象池模式。它有一个Object内部数组。并且所有对象都ArrayList可以经常重用。

0 投票
2 回答
255 浏览

java - 从池中消除突然关闭的套接字,Java

假设有对象池的 Java 实现,并且对象成功连接了 TCP 套接字。

我在池级别(ConnectionFactory)保留一个“清理”线程,每 N 分钟检查一次池是否空闲了 M 分钟(即:最后一次访问是在 M 分钟之前,这里是 M>N)。

如果是这样,则关闭所有额外的套接字,直到池中只剩下核心数量的套接字。

现在我还需要跟踪并消除突然关闭的套接字。这似乎很重要,因为我可能会关闭所有正在工作的那些,并最终得到一个带有突然关闭的套接字的池(在另一端关闭)。

毫无疑问,现在我应该研究 Socket 级别而不是连接工厂级别。

我已经对“在 Java 中跟踪突然关闭的套接字”、“清理连接池”进行了研究,除非我们发送了一些 ACK 或 KeepAliveChecks(每个套接字),否则 Java 套接字 API 中没有任何内容。这意味着我需要定期在每个套接字上执行此操作。

什么是最好的方法(即:有没有其他方法)所以我最终可以将好人(连接良好的套接字)留在我的池中?

如何清理池中突然关闭的套接字?