我已经写,测试与处理器的各种数目的不同的机器几个多线程算法的速度的java程序。

在某些机器上,归并排序*,因为它需要一个相当大的堆空间来工作在非常大的阵列失败。我可以很容易地改变Java堆空间运行自己的程序之前,但我觉得自己像一个更强大和简单的方法是从程序本身做这个任务。

<强>有一种方法,以请求/ Java程序的过程中,实现从虚拟机更多的堆空间?

请注意:我不明白,我可以像“java的-Xmx1g计划”的脚本执行程序;我对这个问题的好奇心是部分学者。

*我实现不在线合并。它需要O(n)的额外存储器。

有帮助吗?

解决方案

Java是没有设计为能够动态地管理存储器,在这种情况下“Java堆空间”,所有的对面,它被设计以便从具有到有关的担心减轻程序员。

总之,我不敢说有没有像Java中的"malloc()"or "setHeapSize(int byes)"

在Java中,你是制约内存的大写金额提供给 JVM 当你程序启动。在内存管理而言,这既是一种祝福和诅咒。

有关那种动态内存分配,你应该尝试使用使用像C和/或C++语言,而不是实现你的算法。

其他提示

据我所知,目前还没有在运行时控制所述堆的大小的方式。

它可能不是必要的,但:可以提供与一个-Xms的最小和最大堆尺寸和-Xmx分别切换即可。 (例如-Xms128m -Xmx512m)JVM将这些范围内管理的实际堆大小。

的最大值是不使用的内存的大小,这是根据使用动态。

在最大堆尺寸应在哪些你宁愿程序失败的点,比使用更多的存储器。没有什么意义动态地改变这一点,甚至academicly。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top