为什么不可能创建最大int大小的数组?
int i = 2147483647;
int[] array = new int[i];
我找到了这样的解释:
new int[Integer.MAX_VALUE - 5];
有两种可能的例外情况:
OutOfMemoryError:Java heap space
表示数组不适合Java堆空间。为了解决这个问题,您可以通过使用JVM选项-xmx
来增加最大堆大小。还要考虑对象的最大大小不能大于最大堆生成量。OutOfMemoryError:请求的数组大小超出VM限制
表示超出了平台特定的大小:
2^31-1=2147483647
元素限制。在HotSpot中,JVM数组的大小受到内部表示的限制。在GC代码中,JVM将堆字中数组的大小传递为int
,然后从堆字转换回jint
,这可能会导致溢出。因此,为了避免崩溃和意外行为,最大数组长度由(max size-header size)限制。其中头大小取决于用于构建您正在运行的JVM的C/C++编译器(用于linux的gcc,用于macos的clang)和运行时设置(如useCompressedClassPointers
)。例如在我的Linux上:
根据我对CNN的理解,扁平化用于从2D到1D,以便可以使用密集层进行分类。同样在我的理解中,扁平化的结果是过滤器的尺寸乘以过滤器的数量。 为什么扁平化后,第一个密集层不一定要与扁平化的结果具有相同的维度(这将是过滤器*过滤器的暗淡值)?第一个密集层的节点比扁平化的暗淡值更少或更大的CNN都可以工作,但我不知道为什么。扁平化不是应该为您提供密集层的输入吗?
我创建了一个包含大量数据的xml。现在,我正在尝试将生成的xml写入一个文件。 声明: 写入文件: 如果返回有限的记录,则该记录是工作文件,但如果超出大小(几乎35 KB),则会出现错误:
这不是创建泛型数组。编译器理解/确定应该没有问题,不是吗?
我已经阅读了这个问题的一些答案(为什么我不能创建大尺寸的数组https://bugs.openjdk.java.net/browse/JDK-8029587)我不理解以下内容。“在GC代码中,我们将对象的大小以单词的形式传递为int。”据我所知,JVM中单词的大小为4字节。根据这一点,如果我们将单词中的大尺寸长数组(例如MAX_INT-5)的大小作为INT传递,我们必须获得OutOfMemoryE
问题内容: 这是我正在运行的命令: 另外,我正在使用自制Python运行Mac 这是我的setup.py脚本:https : //gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd 我要疯了-我不知道为什么这不起作用。 问题答案: 首先安装软件包: 文档并不太清楚,但是 “ wheel项目为setuptools提供了bdist_wheel命令”