multithreading - 在 Java 中的 Set 集合中创建 100K 元素的最佳实践
问题描述
为 Elasticsearch 创建一个 Injector 应用程序,以便对我正在处理的项目进行性能测试。我有用户,每个用户每天都有活动,活动可以是拨打/接听电话、开会、发送/接收电子邮件等。我将 Injector 作为 Java 应用程序运行,参数为 number-of-users、number -of-activities-per-day-per-user和number-of-days。用户名(名字和姓氏)必须是唯一的。为此,我有一个包含 5000 个名字的列表和一个包含 5000 个姓氏的列表,为了使用户名唯一,我从列表中随机选择名字和姓氏,我存储在 aSet
和当我有完整列表时,我将其发送到注入器,该注入器使用随机为每个用户创建活动流 API .parallelStream()
。
我的第一次性能测试针对 500 个用户,每个用户每天 30 个事件,5 个工作日 = 75K 文档。为这个测试创建数据很顺利,我在一个Set
集合中创建Thread
了 500 个唯一的用户名,并检查了为每个用户创建活动的集合。
我的挑战是在第二个测试中(我想将继续下一个测试),我需要 50K 用户的数据:当创建带有用户名的集合时,我得到OutOfMemoryException
了大约 10K 用户。
有没有一种方法可以创建用户名的集合,以保持名称的唯一性并且不会导致OutOfMemoryException
?
我将不胜感激任何帮助、提示和评论。
解决方案
推荐阅读
- pytorch - 有没有什么方法可以为pytorch中的张量生成分段函数?
- c++ - 两个数的对称配对函数
- swift - Swift 无法检索子节点 firebase 数据库
- asp.net-core - Microsoft 标识脚手架页面的 css 文件在哪里?
- django - Django RadioSelect 字段未正确呈现
- javascript - 从 GSI 获取项目但得到“提供的关键元素与架构不匹配”
- node.js - 动态更改 socket.io 来源
- menu - Vuetify - 收听 v-menu 激活器?
- shader - 我是否需要将着色器制服放入 Vertex 函数签名中?
- vba - 如何检查与所有详细信息选项以外的共享日历上的约会?