我试图在Ubuntu (14.04)上运行Java应用程序(ElasticSearch和Cassandra),使用OpenJDK在Power硬件上运行。我遇到了一个错误:
The stack size specified is too small, Specify at least 1664k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
我发现x86_64 OpenJDK java至少需要160 k的堆栈大小。因
我的环境是gcc,C++,Linux。当我的应用程序进行一些数据计算时,它可能需要一个“大”(可能是几个MBs)内存数来存储数据、计算结果和其他东西。我得到了一些使用新,delete的代码来完成这个任务。由于在某些函数作用域之外没有所有权,所以我认为所有这些内存都可以在堆栈中分配。
问题是,默认的堆栈大小(我的系统中的8192 be )可能不够。我可能需要为这些堆栈分配更改堆栈大小。此外,如果以后需要更多的数据,我可能需要再次扩展堆栈大小。
那么,扩展堆栈大小是一种选择吗?由于它不能分配给特定的功能,它将如何影响整个应用程序?在堆栈上分配数据而不是堆上分配数据真的是的改进吗?
为了解释我的问题,我将首先提供一些代码,并解释它的功能:
% 1 1 65532{}for % cut off on mac with font set
% 1 1 99996{}for % cut off on mac without font set
% 1 1 300048{}for % cut off on linux with font set
% 1 1 300368{}for % cut off on linux without font set
% /Times-Roman findfont 10 scalefont setfont
showpage
当我