The invention discloses a method and system for reducing the storage space occupied by object serialization, which relates to the technical field of software development. The method comprises the following steps: defining a Pickle object, which is used to save the contents of the object to be serialized in byte stream format; writing the contents of the object to be serialized into the Pickle object; and according to the memory location of the Pickle object. The address pointer and the size of memory occupied create a local hard disk file and write the contents of the Pickle object to the local hard disk. The method of reducing the storage space occupied by object serialization provided by the invention reduces the memory size occupied by the serialized object by using the Pickle object to serialize the object, thereby improving the writing speed of the file and reducing the size of the hard disk space required for storing the file.
【技术实现步骤摘要】
一种减少对象序列化占用存储空间的方法及系统
本专利技术涉及软件开发
,具体涉及一种减少对象序列化占用存储空间的方法及系统。
技术介绍
通常,对象序列化是指将对象的状态信息转换为可以存储的形式的过程;在序列化期间,对象将其当前状态写入到内存或本地硬盘中;在需要时,可以通过从内存或本地硬盘中读取或反序列化对象的状态,并重新创建该对象。现有技术中,普通序列化的方法过程为:调用memcpy函数,把对象拷贝到一个内存当中,然后再把这个内存数据通过写文件的方式,存储在硬盘当中,且该序列化过程中存储文件格式为json文件格式或xml文件格式。一方面,由于json文件格式或xml文件格式属于文本流格式,在存储时包含有一定的规则,导致文件存储的内容要比实际的内容大很多,进而使得在写入文件时速度变慢,且占用更多的硬盘空间。另一方面,在有些情况下,虽然该对象的总内存较大,但是该总内存中有些字节并未存储有内容,该对象实际使用到的内存较小。当直接调用memcpy函数对该对象进行序列化时,由于是直接将该对象拷贝到内存当中,然后再写入到硬盘中,这一过程,将会造成内存浪费,无存储内容的内存 ...
【技术保护点】
1.一种减少对象序列化占用存储空间的方法,其特征在于,包括步骤:定义一个Pickle对象,所述Pickle对象用于以字节流格式保存待序列化对象的内容;将待序列化对象的内容写入到所述Pickle对象中;根据所述Pickle对象的内存地址指针和占用内存的大小,创建本地硬盘文件,并将所述Pickle对象的内容写入到本地硬盘中。
【技术特征摘要】
1.一种减少对象序列化占用存储空间的方法,其特征在于,包括步骤:定义一个Pickle对象,所述Pickle对象用于以字节流格式保存待序列化对象的内容;将待序列化对象的内容写入到所述Pickle对象中;根据所述Pickle对象的内存地址指针和占用内存的大小,创建本地硬盘文件,并将所述Pickle对象的内容写入到本地硬盘中。2.如权利要求1所述的减少对象序列化占用存储空间的方法,其特征在于,所述待序列化对象包括若干字段,所述将待序列化对象的内容写入到所述Pickle对象中的具体步骤包括:A1:定义一个偏移变量,所述偏移变量用于保存写入待序列化对象的内存偏移量,并对所述偏移变量进行初始化;A2:调用strlen函数获取第一个字段的内存大小;A3:调用WriteData函数写入第一个字段的内容,并将所述偏移变量的值增加所述第一个字段的内存大小;A4:重复步骤A2~A3,写入下一个字段的内容,并将所述偏移变量的值增加所述下一个字段的内存大小,直至写入所述待序列化对象中的所有字段。3.如权利要求2所述的减少对象序列化占用存储空间的方法,其特征在于,所述步骤A2和A3之间还包括步骤:调用WriteInt函数在所述Pickle对象的内存头部写入获取到的第一个字段的内存大小,并将所述偏移变量的值增加所述第一个字段的内存大小所占用的内存。4.如权利要求2所述的减少对象序列化占用存储空间的方法,其特征在于,在调用WriteData函数写入第一个字段的内容时,还包括步骤:调用Align函数对第一个字段的内容进行对齐。5.如权利要求1所述的减少对象序列化占用存储空间的方法,其特征在于,根据所述Pickle对象的内存地址指针和占用内存的大小,创建本地硬盘文件,并将所述Pickle对象的内容写入到本地硬盘中的具体步骤包括:预先定义一个Header对象,使用所述Header对象保存所述Pickle对象...
【专利技术属性】
技术研发人员:黄浩,
申请(专利权)人:武汉斗鱼网络科技有限公司,
类型:发明
国别省市:湖北,42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。