是否可能使一些子线程(例如来自特定线程池)从自己的堆中分配内存?例如,大多数线程都从常规共享堆中分配,而少量工作线程则从各自的堆(每个线程1:1)中分配。
意图是确保在共享环境中安全执行代码 - 典型的工作程序无状态且正在单独的线程上运行,一个请求的处理不应消耗超过4MB的堆。
更新#1 关于“安全执行”和堆消耗的不可预测增加,您为什么担心?
重点在于在我的进程中安全托管任意第三方Java代码。其中一点是避免因第三方代码中的错误而导致整个进程的“内存不足”。
更新#2 有关限制每个线程的内存使用情况,在Java语言中不可能实现
根据我在发布此问题之前调查的结果,我的看法是一样的,我只是希望我错过了什么东西。
目前,我所能看到的唯一可能的替代解决方案是...
意图是确保在共享环境中安全执行代码 - 典型的工作程序无状态且正在单独的线程上运行,一个请求的处理不应消耗超过4MB的堆。
更新#1 关于“安全执行”和堆消耗的不可预测增加,您为什么担心?
重点在于在我的进程中安全托管任意第三方Java代码。其中一点是避免因第三方代码中的错误而导致整个进程的“内存不足”。
更新#2 有关限制每个线程的内存使用情况,在Java语言中不可能实现
根据我在发布此问题之前调查的结果,我的看法是一样的,我只是希望我错过了什么东西。
目前,我所能看到的唯一可能的替代解决方案是...
1) 我的Java线程占用了多少内存? - 在一些管理线程中跟踪线程内存使用情况并终止不良线程。
2) 在自己的JVM上运行Java代码 - 是的,这是可能的。您可以下载一个JVM开源实现,进行修改... :)