问题标签 [object-pooling]

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 投票
1 回答
396 浏览

performance - Universal object pool

I see the benefit of using object pooling, and I also want to combine it with Vectors. But, reading about Vectors, I see that they can only be defined at compile time, meaning a separate pooler class for each of the pooled classes is required. On the other hand, I would like to have a random class instance of a set (all extending a certain class) to be pulled from a pool at runtime, so that I don't exactly know which object pooler is to be called. And, in order to not multiply the code sequences for pooler classes, I want to combine all pools into a UniversalPooler class, which then can serve requests like var foo:SomeClass=UniversalPool.getFromPool(SomeClass);. The question is, how can I implement such a universal pooler performance effectively, using Vectors if at all possible, and probably using random subclass selection?

0 投票
3 回答
2845 浏览

java - Third party lib for object pool with expiration time in Java

I'm on a webservice server and I have objects with an internal connection.
Initializing this connection takes really long so my idea was to use an object pool to reuse the connections among different requests.

The objects are connected to each user, so i prefer to use the username as key and the connection as value. But I don't want to have the connection open forever. Maybe after a while it should be destroyed if the user does not start requests any more.

I thought about using the apache object pool but i didn't see expiration there (correct me if i'm wrong)

The ehcache offers me notifications about eviction and expiration, but not triggered after the timeout was over, only if the cached object was touched again.

Does someone know a lib which can do this job for me?

0 投票
0 回答
151 浏览

hbase - 重用放在 HBase 客户端?

当向 HBase 放入新行时,需要创建一个新Put实例并调用add(byte [] family, byte [] qualifier, long ts, byte [] value)添加数据,这将创建一个KeyValue实例。如果有很多 put 操作,就会创建很多Put和。KeyValue它经常触发GC。

有没有办法重复使用PutKeyValue?如果是这样,我可以使用 ObjectPool 来稳定内存使用,而不是分配很快就会被 GC 处理的内存。

0 投票
0 回答
178 浏览

objective-c - Objective-C 对象池对象在作为集合的一部分时获得释放

我目前正面临一个关于实现我正在尝试使用 Cocoa 构建的对象池模式的问题。

我班的基本行为如下:

  • “客户端”对象请求一个对象 -> 如果可用,则从“未使用”对象集合中重用该对象(否则该类实例化一个新对象),放入“使用中”集合并返回给客户端
  • 使用对象完成“客户端”对象 -> 将对象放入“未使用”集合并从“使用”集合中删除

问题是我使用包含数组的字典用于“未使用”集合,并且不知何故,对象在数组中时被释放并设置为 nil,从而使我的应用程序崩溃......

我一直在尝试调试这个几个小时,但我仍然不知道是什么导致了这个错误......

我在这里错过了什么吗?我应该更关心一些特别是关于保留/释放/自动释放调用的事情吗?

PS:我没有使用ARC

这是你的答案,因为我是法国人,请原谅我的英语;-)

0 投票
1 回答
817 浏览

c++ - 创建对象池

我想使用类型 X 对象的向量创建一个对象 bool。当我创建向量时:

我希望尽可能完成最少的工作。是否只会调用默认构造函数(对于 X,我的默认构造函数为空)?

稍后在我的程序中,如何使用对象池“创建”我的对象?会不会是这样的:

哪里get_next_object_in_pool()只保留向量中下一个空闲索引的索引?

0 投票
1 回答
77 浏览

c++ - Object pool - creating the objects later isnt working

My aim is to create a vector containing many pre-prepared (I dont have the two data members until later on but I want to allocate as much as I can in continuous memory) instances of my object in continuous memory and then later on in my program I can quickly use one of these prepared "shells" to instantiate my object quicker. Most importantly all of these objects will be located in the same continuous memory addresses.

To achieve the above I did this:

But I cannot get it to compile whilst still having a variable name on the object.... here is MyClass:

0 投票
1 回答
1314 浏览

c++ - 自定义内存堆上的 boost::object_pool

我想创建一个对象池,但我希望它只在我的内存堆的特定段上分配内存。有没有办法使用 boost 来做到这一点?

0 投票
2 回答
52 浏览

java - 将对象放回池中是强制性的吗?

我正在使用 ApacheGenericObjectPool来创建我班级的对象池。

我有网络应用程序。处理完我的请求后,我会将对象放回池中,没有任何问题。在代码中,我将对象保留在finally块中的池中。

我的问题是,在我的 JUnit 测试用例中,我也从池中获取对象并使用它。在我的测试用例执行完成后,我真的需要将对象保留回池中吗?

是否真的需要在上面的 finally 块中提到的测试用例中将对象保留回客户端?

0 投票
3 回答
386 浏览

java - Generic ObjectPool - 如何返回一个泛型类?

我正在尝试开发一个 ObjectPool,它可以与任何 Object 一起使用,而无需更改 Pool 和 Object 的源 - 但我找不到任何方法来编写get() -function(“Maincode”得到一些 Object来自池),因为存在类型不匹配(无法从 Object 转换为 TestObject)

到目前为止,这是我的代码:

对象池:

对象(ArrayList)中有池中的所有对象,availableObjects 只包含所有可用对象的列表。我基本上只是返回第一个可用对象并将其标记为不可用。

主代码:


如何使get() -Method 更通用/更具体,以便每次使用不同的类且无需解析主代码时都无需调整池即可工作?


更新:

使用该 Pool 的更通用版本,get() - 方法看起来如何正确?
(非常感谢任何其他反馈!)
更新:下面 MainCode 的工作(固定)版本

更新 2:
我刚刚意识到它不能像这样工作,我需要在池中创建新对象 - 如果不为每种对象调整池,这似乎几乎不可能做到。
那么我可以以某种方式删除池中所有对象之间的引用吗?(因为我使用 baseObject 来初始化所有对象,实际上我只有 5 个对 1 个对象的引用)
或者有更好的方法来管理它吗?(不强迫用户在他的代码中创建对象)

到目前为止的完整代码:

对象池

主代码(原创)

主代码(固定)

TestObject 仅包含一个用于测试目的的int

错误

0 投票
1 回答
156 浏览

java - 将对象从池传递到可运行类

我在阻塞队列中有一个对象池。现在我想将队列中的对象分配给一个线程并在 run 方法中使用它。

最好的方法是什么?

这是我用来构建池的示例代码:

那是用来建立对象池的。

这是我想要创建线程的方式。

}

}

现在我想通过线程访问池中的对象。在主程序中,我应该在创建 MrRunnable 对象期间将对象从消费者池传递给可运行类,还是有其他方法可以做到这一点?