使用java ScheduledThreadPoolExecutor实现这一点是不够的,因为当GC执行"Stop the World“收集时,我的线程会暂停,而GC正在执行它的工作。我想用Java语言实现业务逻辑,同时在C++中用POSIX线程实现时间关键型部分(顺便说一下,本机环境是Linux )。这将允许我们节省数千行用Java编写的代码,还可以从本机系统调用中获得所需的速度。我的问题是:如果我调用一个JNI函数来创建一个单独的POSIX线程,当Java
:860)09-30 08:54:24.264: E/AndroidRuntime(1033): at android.os.Looper.loop(Looper.java:137)
09-3008:54:24.264: E/AndroidRuntime(1033): at android.app.Activi
我们想看看在这个盒子里我们能用Java创建多少线程。令我们惊讶的是,我们不能创建太多。基本上,使用-Xss可以设置的最小堆栈大小是64k。简单的数学计算会告诉你,64*7000将消耗430Mb,所以我们只能让它达到大约7000个线程,然后我们遇到了这个错误:
java.lang.OutOfMemoryError: unable to create这是Java的真正限制吗?每个512Mb的内存,我们只能挤入7k个线程?