Java:Java编译器如何计算程序的内存使用量?

3
我正在解决this问题。它需要50000字节的内存限制。所以,如果我分配一个1000 X 1000大小的int类型2D数组,它不应该超出内存范围吗?
PS:我看到this问题的解决方案,程序员分配了一个大小为m X m的2D数组。如果m等于1000,那么我认为内存限制将被超出。但是codechef已经接受了他的解决方案。
是codechef编译器存在错误机制还是我漏掉了什么?

4
编译器不计算内存。内存是在数组对象创建时分配的,这发生在运行时。 - user166390
那么内存限制不应该仍然被超出吗? - Nikunj Banka
请参考NPE的答案,以获得一个合理的解释。堆空间将有一些限制(通常可以通过“Xms”等进行配置)。尝试分配更大的内存 - 比如1GB - 这应该会导致运行时OutOfMemoryError - user166390
2个回答

3

来自网站:

源代码限制:50000字节

此限制适用于您的源代码大小,而不是程序分配的内存量。这两者完全无关。


0

源代码的最大大小为50000字节,这与程序使用的内存完全无关。大小为1000*1000的二维数组将从RAM(主内存)中分配给您的程序。

顺便说一下,在Codechef上,单个数组的最大大小限制在10^7到10^8左右,因为很难分配连续的内存位置。

您可以参考Codechef上的讨论以获取更多详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接