我有一个消费者/制作人计划,其中:
处理线程是此类的实例:
class ProcessingThread extends Thread {
private void process(String s) {
(big method with calls to other big methods)
}
public void run() {
String s = queue.take();
process(s);
}
}
转换为执行程序非常简单:字符串将直接进入执行程序,以及Runnable:
class Task implements Runnable {
private void process(String s) {
(big method with calls to other big methods)
}
public void run() {
process(s);
}
}
然后:
executor.execute(new Task(s));
但是......每次我实例化一个Task时,它都会实例化一大块代码(处理器) - 我不能这样做,内存需求会很高。
我该怎么做?
答案 0 :(得分:0)
我最终接受了Damien O'Reilly的建议。
然后您需要相应地分配VM堆。或者根据需要水平和/或垂直缩放。但正如你所知,多次实例化一个类,并不会导致所述类字节码的多个副本。 - Damien O'Reilly 10月20日16:43