问题标签 [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 回答
781 浏览

c# - 一个对象池包含不同的派生类

简洁版本:

我将如何创建一个对象池来存储从同一个基类派生的不同类型的类?
有关预期用法的示例,请参见下文。


长版:

我有一个类BaseComponent,有许多派生类Child1Component,例如Child2Component.

我还有另一个对象表示这些组件的集合,它们的属性设置为特定值。我称之为 an EntityTemplate,因为实体是由一组组件及其值定义的。

我想基于实体组件创建实体。为此,目前我得到了适当的EntityTemplate,循环遍历它的不同组件并调用Clone我在每个子类上定义的方法。我也在Copy那里定义了一个方法,这可能很有用。

当实体过期时,我想将其组件添加到对象池中,然后当我接下来需要创建实体时,我将获取实体模板,并且对于每个组件,我将从池中获取相同类型的一个并将其属性设置为等于 中的属性EntityTemplate,如下所示:

0 投票
1 回答
234 浏览

flash - 对象池不工作

我在设置对象池时遇到问题。我创建了一个“BallPoll”自定义类来处理池逻辑。我首先调用 fillPool() 将 20 个 Ball 对象添加到我的数组中。然后在我的文档类中,当我想创建一个 Ball 时,我检查了 pool 数组。它不工作,我不知道为什么。

------文档类------

------------BallPool 类---------

0 投票
2 回答
1004 浏览

java - 是否有专有的 java 对象池库?

我需要创建一个套接字连接池(TCP)。我打算使用公共池,但想了解市场上的任何专有对象池库。

谢谢巴尔加瓦

0 投票
2 回答
1719 浏览

c# - 创建一个泛型类池,在其中提供泛型参数并获取使用该参数的泛型对象

目标

我有一个通用类GenericClass<T>,我想汇集实例。
我有兴趣看看我是否可以获得语法:

(我对泛型的理解是,不,我不能,别傻了,语法不存在/不起作用,但我对其他人的想法很感兴趣)。


展示我的作品

从我对类型的理解来看,我有点怀疑,并且从类型系统的角度来看GenericClass<string>并没有真正相关。GenericClass<int>

现在,我意识到我可以接近,即:

然后就在某个地方GenericPool存储一个Dictionary<Type, ObjectPool<object>>
我有兴趣看看我是否可以避免这样做。我不想每次都指定泛型类型,作为调用者,我只更改泛型类型参数。我还希望能够强制(编译时)进入我的所有对象GenericObjectPool<T>都是一组泛型类型(T<>)。


我认为问题源于无法将泛型类型参数视为自身的泛型。如果我能做到这一点(我已经可以了吗??)那么也许像下面这样的东西可能会起作用:


问题

我可以得到我想要的语法(在顶部)吗?如果没有,我能离多近?

0 投票
1 回答
155 浏览

android - 我们可以使用对象池概念而不是声明大尺寸字节数组吗?

我有一个问题,我们可以使用对象池概念而不是将大尺寸字节数组声明为 20MB。如果是,那么如何?实际上我有一个声明,byte[] fileData = new byte[2097152];因为在我们尝试连续访问同一个 java 文件 20 到 24 次后,我必须从应用程序中经常返回 OutOfMemory Exception 的视频文件中读取那么多数据。意味着这不是错误,在这种情况下堆内存已满,GC 无法在给定的时间跨度内清除相同的内存,这就是它返回 OutOfMemory 异常的原因。那么,我们可以在这里使用JAVA 的ObjectPooling概念来提高内存利用率吗?

提前致谢。

0 投票
1 回答
2025 浏览

java - android中对象池概念的实现

我是 android 新手,我需要在我的应用程序中使用对象池,但我对此知之甚少。它可能如何实施?

0 投票
1 回答
537 浏览

java - 配置 Jetty 以访问共享对象池

我有一个以无状态方式处理文本的对象。它基本上需要一些输入并返回结果。但是,创建对象的成本很高,因为它需要将大量数据加载到内存中。我想使用 Jetty 围绕它构建一个 Web 服务,以便我可以解析来自外部源的文本。Jetty 应该在内存中保留一个这样的对象池,并使用它们来处理 HTTP 请求(确保一个对象一次只被一个 HTTP 线程使用)。如何配置服务器来做到这一点?

0 投票
2 回答
1712 浏览

c++ - 来自 std::vector 的 pop-push 元素和重用元素

我在 c++03 中有一个项目存在数据结构问题:即使我必须不断地 pop_front-push_back,我也使用向量而不是列表。但是现在还可以,因为我现在需要重写太多代码。

我的方法是总是更新最后一个 frame_size 点的缓冲区。所以每一帧我都必须向前弹出并向后推。(也许这种方法有一个名字?)

所以我使用这段代码:

我有一些用于对象池的现成代码,所以我想:这不是一个很好的优化,但我可以将前端存储在池中,这样我就可以获得 apoint 的分配时间。

好的,这不是那么有用,可能没有意义,但我只是出于教育的好奇心:我该怎么做?

如何存储向量的已擦除元素的内存以重用它?这个问题有意义吗?如果不是,为什么?

.. 因为擦除不返回擦除的向量,它返回:

一个随机访问迭代器,指向函数调用擦除的最后一个元素之后的元素的新位置,如果操作擦除了序列中的最后一个元素,则该位置是向量结束。

0 投票
2 回答
1716 浏览

java - couchdb 的连接池

我有一个 couchdb 数据库,我正在并行查询它。现在,我想创建一个连接池,因为我在设计中发现了一个瓶颈——我使用了一个 couchd 实例,因此并行化失败了。

我在网上搜索了连接池实现,但我找不到适合 couchdb 的 Java 连接池实现——大多数框架都支持关系数据库。如果有人可以帮助我,我将不胜感激。

0 投票
1 回答
958 浏览

java - newFixedThreadPool 在对象池中没有按预期工作

我正在努力弄清楚如何汇集资源,我开始怀疑我的线程可能是问题(不是 100%,但一直在试验它)。我要做的事情的要点是创建一个到服务器的通道池,然后查看线程是否正在使用它们。我已经成功地获得了为我上传的尽可能多的项目创建的频道数量(即它没有汇集,只是在每个线程中创建新频道)并且成功地只创建了一个频道(即没有汇集或创建新的频道)频道根据需要)。

我在想也许线程与池交互的方式是问题,所以我尝试创建newCachedThreadPool这样线程就不会死,只要有工作,但是当我这样做时,我收到错误说正在使用的通道已关闭。我的池中有一个destroyObject方法,但我从不调用它,所以我不明白它为什么被触发(如果我将它注释掉,那么它可以工作,但只创建一个通道,上传速度非常慢,大约 300 次操作/秒,而没有线程池我得到 30k/秒)。我怀疑它的终止,有什么方法可以验证这一点,如果它终止,我可以使用替代方法吗?

这是代码(忽略所有rabbitmq的东西,它只是为了让我可以监控结果):

ps 我基本上问了几个问题并阅读了文档并试图弄清楚这一点,在此过程中我可能完全走错了方向,所以如果您看到任何问题或提示,请按我的方式发送。

情节变厚:

在 main 方法的 for 循环中(我将工作提交给线程),我添加了:

它向我显示了 25 个线程(尽管我说的是 20 个)和池中的 20 个项目。但是当我查看 rabbitmq UI 时,我看到一个连接只有一个通道。如果我创建频道并提交给可运行的,那么它会创建许多频道(但它永远不会关闭它们)。我不明白发生了什么以及为什么结果不符合预期。