我正在通过Android Studio 3.1.3在Kotlin编程。我创建了一个Long类型的数组,该数组显然太大而无法编译。玩了一段时间后,我发现可以编译的最大大小数组包含8,207个元素。包含8,208个或更多元素的数组导致编译错误。数组中有350行元素,其中包含数字顺序的质数。两个问题:
有人知道为什么会有这个限制吗? 8,208是(2 ^ 13 + 2 ^ 4),但这似乎是一个奇怪的转折点。因此,我怀疑这是限制的原因。
有没有办法增加允许的数组大小?
注意:在Android论坛上,建议我使用ArrayList而不是ArrayLong。我对此建议表示赞赏并打算尝试一下,但是长数组的限制对我来说仍然很奇怪。如果有人对限制有更优雅的解决方案或解释,我很乐意听到!谢谢您的宝贵时间。
答案 0 :(得分:3)
因此,您要尝试执行的操作类似于:
var a = longArrayOf(1,2,3,4,5,6,7,8...)
JVM有一个限制。方法的最大大小为64K。
如果您反编译代码,则对于数组中的每个元素都会收到类似的内容:
DUP
SIPUSH 8206
LDC 8207
LASTORE
这就是您达到极限的地方。