一种内存共享方法和相关装置制造方法及图纸

技术编号:38459644 阅读:14 留言:0更新日期:2023-08-11 14:36
本申请公开了一种内存共享方法和相关装置,在基于第一编程语言的运行环境中,可以通过编程接口加载基于第二编程语言的可执行文件,第二编程语言为相比于第一编程语言更底层的编程语言,通过基于第二编程语言的可执行文件,可以为目标内存标识确定对应的共享内存空间,将运行环境的内存中的待共享数据复制到共享内存空间,由于共享内存空间用于供运行环境中的多个进程访问,因此多个进程可以通过访问共享内存空间中的同一数据从而实现数据的共享,提高进程间数据传输效率,利于提高应用性能。此外,还可以将目标内存标识和共享内存空间的内存区域信息存储到全局变量中,即使可执行文件执行完毕也不会影响多个进程对共享内存空间中的数据的访问。存空间中的数据的访问。存空间中的数据的访问。

【技术实现步骤摘要】
一种内存共享方法和相关装置


[0001]本申请涉及数据处理领域,特别是涉及一种内存共享方法和相关装置。

技术介绍

[0002]前端开发者可以基于编程语言在运行环境中开发服务端应用,例如Node.js是一种基于Chrome V8引擎的JavaScript运行环境,可以用于开发高性能、可伸缩的网络应用程序,其编程语言可以为JavaScript语言。然而,在运行环境中存在需要大量传递数据的场景,应用性能较低。

技术实现思路

[0003]为了解决上述技术问题,本申请提供了一种内存共享方法和相关装置,在基于第一编程语言的运行环境中,可以通过编程接口加载基于第二编程语言的可执行文件,以利用第二编程语言实现内存共享,提高进程间通信效率,利于提高应用性能。
[0004]本申请实施例公开了如下技术方案:一方面,本申请提供一种内存共享方法,所述方法包括:在基于第一编程语言的运行环境中,通过编程接口加载基于第二编程语言的可执行文件,所述第二编程语言为相比于所述第一编程语言更底层的编程语言;通过所述可执行文件,为目标内存标识确定对应的共享内存空间,将所述运行环境的内存中的待共享数据复制到所述共享内存空间,将所述目标内存标识和所述共享内存空间的内存区域信息存储到全局变量;所述共享内存空间用于供所述运行环境中的多个进程访问。
[0005]另一方面,本申请提供一种内存共享装置,所述装置包括:文件加载单元,用于在基于第一编程语言的运行环境中,通过编程接口加载基于第二编程语言的可执行文件,所述第二编程语言为相比于所述第一编程语言更底层的编程语言;内存确定单元,用于通过所述可执行文件,为目标内存标识确定对应的共享内存空间;所述共享内存空间用于供所述运行环境中的多个进程访问;数据复制单元,用于将所述运行环境的内存中的待共享数据复制到所述共享内存空间;内存信息存储单元,用于将所述目标内存标识和所述共享内存空间的内存区域信息存储到全局变量。
[0006]可选的,所述数据复制单元,包括:数据信息获取单元,用于获取所述待共享数据在所述运行环境的内存中的栈中的字节起始地址,以及所述待共享数据的字节长度;复制子单元,用于根据所述字节起始地址和所述字节长度,将所述待共享数据复制到所述共享内存空间。
[0007]可选的,若所述待共享数据的数据类型为引用类型,所述数据信息获取单元,包括:字节长度获取单元,用于确定所述运行环境的内存中的堆中的待共享数据的字节长度;空间分配单元,用于根据所述字节长度,在所述运行环境中的内存中的栈中为所述待共享数据分配中间存储空间,并获取所述中间存储空间的字符串指针;写入单元,用于将所述待共享数据写入所述中间存储空间;起始地址确定单元,用于利用所述中间存储空间的字符串指针,确定所述待共享数据在所述中间存储空间中的字节起始地址。
[0008]可选的,所述字节长度获取单元具体用于:根据所述运行环境的内存中的堆中的待共享数据的各个属性值的字节长度,确定所述待共享数据的字节长度。
[0009]可选的,所述复制子单元具体用于:根据所述字节起始地址和所述字节长度,利用所述栈中的字符串指针和所述共享内存空间中的字符串指针,将所述待共享数据中的各个位依次复制到所述共享内存空间。
[0010]可选的,所述装置还包括:数据读取单元,用于获取所述共享内存空间中的待读取数据;格式还原单元,用于若所述待读取数据的原始数据类型为引用类型,则将所述待读取数据进行格式还原得到具有引用类型的待处理数据,所述引用类型为对象类型或函数类型;若所述待读取数据的原始数据类型为基本类型,则将所述待读取数据进行格式还原得到具有基本类型的待处理数据,所述基本类型为数字类型或字符串类型。
[0011]可选的,所述装置还包括:内存信息删除单元,用于通过所述可执行文件,删除所述全局变量中的目标内存信息,所述目标内存信息包括所述目标内存标识中的待删除标识和所述待删除标识对应的共享内存空间的内存区域信息,以释放所述待删除标识对应的共享内存空间。
[0012]可选的,所述内存确定单元具体用于:创建初始共享内存空间,从所述初始共享内存空间中确定所述目标内存标识对应的共享内存空间;或,为所述目标内存标识创建对应的共享内存空间。
[0013]可选的,所述内存确定单元具体用于:若不存在目标内存标识,为目标内存标识确定对应的共享内存空间;若存在目标内存标识,获取所述目标内存标识对应的共享内存空间或为所述目标内存标识更新对应的共享内存空间。
[0014]可选的,所述内存确定单元具体用于:在存储空间中创建目标内存标识对应的文件,所述文件所在位置作为所述目标内存标识对应的共享内存空间。
[0015]可选的,所述多个进程用于进行图像处理、音视频编解码和网络通信中的至少一项。
[0016]另一方面,本申请提供一种计算机设备,所述设备包括处理器以及存储器:
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;所述处理器用于根据所述计算机程序中的指令执行上述方面所述的内存共享方法。
[0017]另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述方面所述的内存共享方法。
[0018]另一方面,本申请实施例提供了一种包括计算机程序的计算机程序产品,当其在计算机设备上运行时,使得所述计算机设备执行所述的内存共享方法。
[0019]由上述技术方案可以看出,在基于第一编程语言的运行环境中,可以通过编程接口加载基于第二编程语言的可执行文件,第二编程语言为相比于第一编程语言更底层的编程语言,通过基于第二编程语言的可执行文件,可以为目标内存标识确定对应的共享内存空间,将运行环境的内存中的待共享数据复制到共享内存空间,由于共享内存空间用于供运行环境中的多个进程访问,因此多个进程可以通过访问共享内存空间中的同一数据从而实现数据的共享,提高进程间数据传输效率,利于提高应用性能。此外,还可以将目标内存标识和共享内存空间的内存区域信息存储到全局变量中,这样即使可执行文件执行完毕,目标内存标识和共享内存空间的内存区域信息也得到保留,共享内存空间不会被释放,其内存储的数据不会被删除,因此即使可执行文件执行完毕也不会影响多个进程对共享内存空间中的数据的访问。
附图说明
[0020]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0021]图1为本申请实施例提供的一种内存共享方法的应用场景的示意图;图2为本申请实施例提供的一种内存共享方法的流程图;图3为本申请实施例提供的一种通过Rust程序创建共享内存空间的过程示意图;图4为本申请实施例提供的另一种内存共享方法的流程示意图;图5为本申请实施例提供的一种通过Rust程序的字节起始本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存共享方法,其特征在于,所述方法包括:在基于第一编程语言的运行环境中,通过编程接口加载基于第二编程语言的可执行文件,所述第二编程语言为相比于所述第一编程语言更底层的编程语言;通过所述可执行文件,为目标内存标识确定对应的共享内存空间,将所述运行环境的内存中的待共享数据复制到所述共享内存空间,将所述目标内存标识和所述共享内存空间的内存区域信息存储到全局变量;所述共享内存空间用于供所述运行环境中的多个进程访问。2.根据权利要求1所述的方法,其特征在于,所述将所述运行环境的内存中的待共享数据复制到所述共享内存空间,包括:获取所述待共享数据在所述运行环境的内存中的栈中的字节起始地址,以及所述待共享数据的字节长度;根据所述字节起始地址和所述字节长度,将所述待共享数据复制到所述共享内存空间。3.根据权利要求2所述的方法,其特征在于,若所述待共享数据的数据类型为引用类型,所述获取所述待共享数据在所述运行环境的内存中的栈中的字节起始地址,以及所述待共享数据的字节长度,包括:确定所述运行环境的内存中的堆中的待共享数据的字节长度;根据所述字节长度,在所述运行环境中的内存中的栈中为所述待共享数据分配中间存储空间,并获取所述中间存储空间的字符串指针;将所述待共享数据写入所述中间存储空间;利用所述中间存储空间的字符串指针,确定所述待共享数据在所述中间存储空间中的字节起始地址。4.根据权利要求3所述的方法,其特征在于,所述确定所述运行环境的内存中的堆中的待共享数据的字节长度,包括:根据所述运行环境的内存中的堆中的待共享数据的各个属性值的字节长度,确定所述待共享数据的字节长度。5.根据权利要求2所述的方法,其特征在于,所述根据所述字节起始地址和所述字节长度,将所述待共享数据复制到所述共享内存空间,包括:根据所述字节起始地址和所述字节长度,利用所述栈中的字符串指针和所述共享内存空间中的字符串指针,将所述待共享数据中的各个位依次复制到所述共享内存空间。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:获取所述共享内存空间中的待读取数据;若所述待读取数据的原始数据类型为引用类型,则将所述待读取数据进行格式还原得到具有引用类型的待处理数据,所述引用类型为对象类型或函数类型;若所述待读取数据的原始数据类型为基本类型,则将所述待读取数据进行格式还原得到具有基本类型的待处理数据,所述基本类型为数字类型或字符串类型。7.根据权利要求1

6任一项所述的方法,其特征在于,所述方法还包括:通过所述可执行文件,删除所述全局变量中的目标内存信息,所述目标内存...

【专利技术属性】
技术研发人员:张宇昂
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1