我有一种情况,我需要从第三方 API 创建数千个类的实例。每个新实例都会创建一个新线程。一旦线程数超过 1000,我就会开始出现 OutOfMemoryError。但我的应用程序需要创建 30,000 个实例。每个实例始终处于活动状态。该应用程序部署在具有 8GB RAM 的 64 位 linux 机器上,我的应用程序只有 2GB 可用。
第三方库的工作方式,我不能使用新的 Executor 框架或线程池。
那么我该如何解决这个问题呢?
请注意,使用线程池不是一种选择。所有线程一直在运行以捕获事件。
linux 机器上的正弦内存大小不在我的控制范围内,但如果我可以选择在 32GB 系统中为我的应用程序提供 25GB 可用空间,那会解决我的问题还是 JVM 仍然会阻塞?
上述场景是否有一些最佳的 Java 设置?
系统使用 Oracle Java 1.6 64 位。