在Java和其他基于JVM的语言中,通常需要将事物序列化为字节array.例如,当您想要通过网络发送某些内容时,首先要将其序列化为一个字节array.
在Swift ,人们会这么做吗?或者,当您想要通过网络发送数据时,通常如何序列化数据?
问题是byte[]
和其他数组使用int
编制索引,并且在创建数组时也使用int
,例如:byte[] a = new byte[your int goes here]
.您不能使用long
(64位整数)创建数组,因此您的最大数组大小受最大整数2,147,483,647(实际上最大数组大小略低一点:2,147,483,6475)的限制,因此最大的byte[]
类型数组只能存储大约2 GB的数据.
当我使用Spark(一种分布式计算库)时,当我创建数据集时,每个元素占用的RAM不能超过2 GB,因为在内部,当将数据从集群的一个 node 发送到另一个 node 时,它会被序列化,而当我处理大型对象时,我被迫将一个大对象拆分成小对象,以避免序列化异常.
我认为C#和许多其他语言都有同样的问题.Is the 32-bit .NET max byte array size < 2GB?个
我说SWIFT没有这个问题是对的,因为数组是使用Int(在64位系统上是64位)进行索引的,而字节数组的大小可以是min(Int.max,Maximum_Numbers_Available_by_the_os)?