问题标签 [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.

0 投票
2 回答
745 浏览

java - 在 Spring 中创建 ObjectPool

我有一堂课

我们如何使用 Spring 框架,以便它只向所有(Web)应用程序提供这个工厂的一个副本,并且每个应用程序都使用相同的 ObjPool?

我的意思是如果应用程序 A 从这个 ObjPool 中获取一个对象,那么调用 getUsedCount() 的所有其他应用程序都会看到该值递减。

0 投票
1 回答
1313 浏览

c++ - 提升 pool_alloc

为什么 boost::fast_pool_allocator 建立在单例池之上,而不是每个分配器实例的单独池?或者换句话说,为什么只提供这个,而不是每个分配器都有一个池的选项?这样做会是个坏主意吗?

我有一个类在内部使用大约 10 种不同的 boost::unordered_map 类型。如果我使用了 std::allocator,那么当它调用 delete 时,所有内存都会回到系统中,而现在我必须在某些时候在许多不同的分配器类型上调用 release_memory。我会愚蠢地推出我自己的使用 pool 而不是 singleton_pool 的分配器吗?

谢谢

0 投票
1 回答
1135 浏览

c# - 使用线程池对后台线程进行异常处理

我正在处理的应用程序使用线程池。这是基本的伪代码。

在主线程上

“Component.GetObject”基本上会使用 Yield 返回一个 CLR 对象。该对象需要由线程上的其他两个组件处理。所以我们正在调用提供回调方法的线程池(这将调用两个组件)。

如果派生线程发生异常,则需要通知父线程,以便它可以跳出for循环(即停止派生更多线程),等待派生线程完成然后处理异常。

根据我的阅读,其中一种方法是在主线程上有一个“标志”变量。如果生成的线程出现异常,该线程将使用锁定机制设置变量。父线程会在产生新线程之前检查“标志”变量。

我想知道是否有更好的方法来处理这种情况。正在使用线程池,因为如果“for”循环产生的线程多于线程池限制,它会管理线程的排队。

0 投票
5 回答
7459 浏览

java - Java中String flyweight实现的最佳替代方案

我的应用程序是多线程的,具有密集的字符串处理。我们正在经历过多的内存消耗,并且分析表明这是由于字符串数据造成的。我认为内存消耗将从使用某种享元模式实现甚至缓存中受益匪浅(我确信字符串经常被重复,尽管我在这方面没有任何硬数据)。

我看过 Java Constant Pool 和 String.intern,但似乎它会引发一些 PermGen 问题。

在java中实现应用程序范围的多线程字符串池的最佳选择是什么?

编辑:另请参阅我之前的相关问题:Java 如何在后台为字符串实现享元模式?

0 投票
2 回答
307 浏览

python - mutliprocessing.Pool.add_sync() 占用内存

我想使用多线程来使我的脚本更快......我还是新手。Python 文档假定您已经了解线程和其他东西。

所以...

我有看起来像这样的代码

这给了我很好的速度!

但是,hugesetahugesetb真的很大。Pool在完成工作后将所有ij保存在内存中(基本上,将输出打印到标准输出)。完成后是否有 del ij

0 投票
3 回答
329 浏览

sql-server - 如何找到消耗我的 SQL Server 连接池的代码?

我根据答案重写了以下内容。

我有一个网站导致数据库服务器上出现高 CPU 问题,以至于服务器变得不可用。回收应用程序池可解决此问题。根据服务器管理员http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en显示有大约一个小时的活动线程。

在我们向应用程序添加 Web 表单路由之前,与数据库的交互非常简单且有效。

它们仅由整个应用程序中的此类代码组成。是的,这段代码并不完美,但不是这段代码有问题,因为在我们添加路由之前,没有问题。

连接字符串如下所示:

我们仔细检查了对数据库 Open() 的每次调用都跟在 Close() 之后。当我们在本地运行应用程序时,我们通过查看它们来测量没有打开的连接,并且连接数不会通过以下方式增加:

(但是,如果我们不关闭连接,就会出现泄漏)

我们的应用程序与它工作时的区别在于通过 Web 表单添加了 asp.net 路由。这也会调用数据库,但会在连接打开后再次关闭它们。

我们不确定我们还能检查什么。程序员有什么想法吗?

回答

我们通过 Query Profiler 发现了问题。这向我们展示了一个使用率很高的查询。将查询追溯到代码显示了一遍又一遍地调用数据库的无限循环。很难找到,因为循环是由机器人调用网站上不再存在的页面启动的。

0 投票
2 回答
26609 浏览

python - 如何将队列引用传递给 pool.map_async() 管理的函数?

我想要一个长时间运行的进程通过队列(或类似的东西)返回它的进度,我将把它提供给进度条对话框。当过程完成时,我还需要结果。此处的测试示例以RuntimeError: Queue objects should only be shared between processes through inheritance.

我已经能够使用单个 Process 对象(我可以在其中传递Queue 引用)让它工作,但是我没有一个池来管理我想要启动的许多进程。对此有更好的模式有什么建议吗?

0 投票
2 回答
1402 浏览

pool - 数据结构的资源池

当实现一个基本的数据结构时,如stack, queues, linked listet al. 我应该通过动态分配内存来创建资源池(节点)还是应该在每次需要节点时单独分配内存?

0 投票
1 回答
402 浏览

windows - 在作业池中使用 iocp

在作业/任务池中使用 iocp 以提供快速的工作人员唤醒时,最大程度地减少向端口发送信号的开销的最佳方法是什么 - 即不必在每个队列操作中都这样做?

void Worker() { while(1) { for(int spin = 0; spin < 5000; ++spin) while(queue.Count > 0) queue.PopFront()();

}

...

queue.PushBack(someWork); // decide when to signal completion port but avoid doing it every queue operation ?

例如,在上面的粗略代码草图中,如果您尝试避免在每次队列操作时向端口发送信号,则在工作排队和进入等待之间存在问题。

0 投票
1 回答
735 浏览

java - 如何在Tomcat 6中标记从池中驱逐的连接

我们有一个使用 Oracle StoredProc 的应用程序。当从我们的应用程序外部升级或重新编译存储过程时,必须关闭并重新打开数据库连接。否则我们会得到一个 Oracle 异常 ORA-20003。

到目前为止,我们一直在使用特定于 WebLogic 的解决方案,在该解决方案中,我们抛出了一个特定的异常,Weblogic 连接池会将连接标记为驱逐。我们现在正在迁移到 Tomcat 6。

Tomcat 6 有类似的解决方案吗?或者甚至更好,一个通用的解决方案?

我们可以使用 minIdle=0 和 timeBetweenEvictionRunsMillis= 一些小的数字来配置我们的连接池,但是仍然没有保证,只能缓解问题。

谢谢你的帮助 !