我正在编写一个应用程序,其中将有多个线程运行,并希望限制这些线程的CPU / 内存使用率。
有一个类似的C ++问题,但如果可能的话,我想避免使用C ++和JNI。 我意识到在高级语言中可能无法做到这一点,但我很想知道是否有人有任何想法。
编辑:添加了赏金; 我想要一些真正好的,经过深思熟虑的想法。
编辑2:我需要这种情况是在我的服务器上执行其他人的代码。 基本上它是完全随意的代码,唯一的保证是类文件上将有main方法。 目前,多个完全不同的类,它们在运行时被加载,作为单独的线程并发执行。
按照目前的方式编写,重构以创建每个要执行的类的单独进程将会很繁琐。 如果这是通过VM参数限制内存使用的唯一好方法,那么就这样吧。 但我想知道是否有一种方法可以使用线程来实现它。 即使作为单独的进程,我也希望能够以某种方式限制其CPU使用率,因为如我之前所提到的,其中有几个将同时执行。 我不希望一个无限循环占用全部资源。
编辑3:使用java的Instrumentation类可以简单地近似对象大小; 具体来说,是getObjectSize方法。 请注意,需要一些特殊设置才能使用此工具。