kae*_*atl 2 java multithreading out-of-memory
我有一个大规模创建线程的应用程序.结果我得到一个OutOfMemoryError.我的想法是等到有足够的可用空间来创建下一个Thread.但是因此我需要知道创建一个线程需要多少内存以及这个内存是否可用.有没有办法获得线程需要的内存量?我如何确定这个内存量是否可用?
我已经尝试过的:
for (int i = 0; i < links.size(); i++) {
while(Runtime.getRuntime().maxMemory() - Runtime.getRuntime().totalMemory() +
Runtime.getRuntime().freeMemory() < MEMORY_THRESHOLD) {
synchronized (lock) {
lock.wait(10);
}
}
Thread t = new Thread(new Task(links.get(i)));
t.setDaemon(true);
t.start();
}
Run Code Online (Sandbox Code Playgroud)
但即使我使用100MB作为阈值,我也会得到一个OutOfMemoryError.