Я написал класс пула потоков, ссылаясь на http://www.informit.com/articles/article.aspx?p=30483&seqNum=5
Окружающая среда: Windows7 4 cp
Выполнил мою программу с 70 000 потоков в Windows 7, под JDK 1.5 она прошла успешно. Не используются аргументы vm.
Тот же код, который я пытался выполнить с 5000 потоков в корпоративной версии Linux, который находится под Virtual Box с 4 ГБ базовой памяти. с аргументами vm -xms512m -xmx1024m. Он выполняет до 2156 потоков и выдает исключение
Исключение в потоке «основной» java.lang.OutOfMemoryError: невозможно создать новый собственный поток в java.lang.Thread.start0 (собственный метод) в java.lang.Thread.start (Thread.java:597) в testthreadpool.ThreadPool. (ThreadPool.java:38) в testthreadpool.TestThreadPool.main(TestThreadPool.java:16)
Но тот же код отлично работает в Windows7.
Могу ли я узнать, почему возникает эта ошибка. Нужен ли этому java-коду 1 ГБ памяти для запуска всего 5000 потоков?...
Мое фактическое требование состоит в том, чтобы удерживать ThreadPool с 10 000 Workthread.