我编写了一个 java 程序,可以在具有不同数量处理器的不同机器上测试几个多线程算法的速度。
在某些机器上,归并排序* 会失败,因为它需要相当大的堆空间来处理非常大的数组。在运行程序之前,我可以自己轻松地更改 Java 堆空间,但我觉得更健壮和简单的方法是从程序本身内部完成这项任务。
有没有办法在 Java 程序的过程中从虚拟机请求/获得更多的堆空间?
注意:我知道我可以使用“java -Xmx1g Program”之类的脚本来执行程序;我对这个主题的好奇心部分是学术性的。
*我的实现不会在线合并。它需要 O(n) 额外的内存。