CN110058904B - 数据转移方法、装置及服务器 - Google Patents

数据转移方法、装置及服务器 Download PDF

Info

Publication number
CN110058904B
CN110058904B CN201910335773.8A CN201910335773A CN110058904B CN 110058904 B CN110058904 B CN 110058904B CN 201910335773 A CN201910335773 A CN 201910335773A CN 110058904 B CN110058904 B CN 110058904B
Authority
CN
China
Prior art keywords
data
memory space
preset type
preset
execution code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910335773.8A
Other languages
English (en)
Other versions
CN110058904A (zh
Inventor
陈江豪
邝耀宗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong 3vjia Information Technology Co Ltd
Original Assignee
Guangdong 3vjia Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong 3vjia Information Technology Co Ltd filed Critical Guangdong 3vjia Information Technology Co Ltd
Priority to CN201910335773.8A priority Critical patent/CN110058904B/zh
Publication of CN110058904A publication Critical patent/CN110058904A/zh
Application granted granted Critical
Publication of CN110058904B publication Critical patent/CN110058904B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请提供的数据转移方法、装置及服务器,应用于数据处理设备,该数据处理设备获得包含WebAssembly执行代码和JavaScript执行代码的网页。在网页运行的过程中,针对所述WebAssembly执行代码中的预设功能单元,该预设功能单元在申请的第一内存空间对预设类型的数据进行初始化之后,将预设类型的数据转移到JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间。如此,在该网页运行期间,减少WebAssembly执行代码申请的内存空间,提高了该网页运行时的稳定性。

Description

数据转移方法、装置及服务器
技术领域
本申请涉及数据处理领域,具体而言,涉及一种数据转移方法、装置及服务器。
背景技术
Haxe是一种跨平台的计算机开发语言。基于Haxe语言开发的应用程序,利用Haxe提供的工具可以直接发布应用到电脑、浏览器和手机等多个平台上。基于此原因,通过Haxe编程语言进行网页图像开发,变得成为一种趋势。然而,在一些大型的图形开发项目中,内存占用量往往成为性能的瓶颈。基于Haxe计算机语言,通过WebAssembly技术获得的在浏览器中运行的Web程序更是如此。
发明内容
为了克服现有技术中的至少一个不足,本申请的目的在于提供一种数据转移方法,应用于数据处理设备,所述方法包括:
获取一网页文件,所述网页文件包括WebAssembly执行代码和JavaScript执行代码;
在所述网页文件运行过程中,针对所述WebAssembly执行代码中的预设功能单元,在所述预设功能单元申请的第一内存空间对预设类型的数据进行初始化之后,将所述预设类型的数据转移到所述JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间。
可选地,所述方法还包括:
获取所述预设类型的数据在第二内存空间的存储位置,并生成所述预设类型和所述预设类型的数据在第二内存空间的存储位置的对应关系。
可选地,所述方法还包括:
通过所述WebAssembly执行代码获取所述预设类型的数据时,根据所述对应关系判断所述预设类型的数据是否转移到所述第二内存空间;
若所述预设类型的数据转移到所述第二内存空间,通过所述预设类型从所述对应关系中获得该预设类型的数据在所述第二内存空间中的存储位置,并从所述第二内存空间获取所述预设类型的数据。
可选地,所述WebAssembly执行代码使用了lime和openfl两个基础库,所述lime和openfl两个基础库通过Bytes类申请并管理内存。
可选地,所述所述JavaScript执行代码实现了所述Bytes类的读写接口,所述方法还包括:
所述WebAssembly执行代码调用所述JavaScript执行代码中和所述Bytes类中对应的接口实现申请并管理内存。
可选地,所述Bytes类新增有将所述第一内存空间中的数据转移到所述所第二内存空间的方法,将所述第二内存空间中的数据转移到所述第二内存空间的方法,以及判断所述预设类型的数据是否转移的方法。
本申请实施例的另一目的在于提供一种数据转移装置,应用于数据处理设备,所述数据转移装置包括获取模块、第一转移模块;
所述获取模块用于获取一网页文件,所述网页文件包括WebAssembly执行代码和JavaScript执行代码;
所述第一转移模块用于在所述网页文件运行过程中,针对所述WebAssembly执行代码中的预设功能单元,所述预设功能单元在申请的第一内存空间对预设类型的数据进行初始化之后,将所述预设类型的数据转移到所述JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间。
可选地,所述数据转移装置还包括关联模块;
所述关联模块用于获取所述预设类型的数据在第二内存空间的存储位置,并生成所述预设类型和所述预设类型的数据在第二内存空间的存储位置的对应关系。
可选地,所述数据转移装置还包括判断模块和第二转移模块;
所述判断模块用于通过所述WebAssembly执行代码获取所述预设类型的数据时,根据所述对应关系判断所述预设类型的数据是否转移到所述第二内存空间;
所述第二转移模块用于若所述预设类型的数据转移到所述第二内存空间,通过所述预设类型从所述对应关系中获得该预设类型的数据在所述第二内存空间中的存储位置,并从所述第二内存空间获取所述预设类型的数据。
本申请的实施例的另一目的在于提供一种服务器,所述服务器存储有预设网页文件,当所述服务器获取到数据处理设备发送的获取请求时,将所述预设网页文件发送给所述数据处理设备,使得所述数据处理设备运行所述预设网页文件时,实现所述的数据转移方法。
相对于现有技术而言,本申请具有以下有益效果:
本申请实施例提供的数据转移方法、装置及服务器,应用于数据处理设备,该数据处理设备获得包含WebAssembly执行代码和JavaScript执行代码的网页。在网页运行的过程中,针对所述WebAssembly执行代码中的预设功能单元,该预设功能单元在申请的第一内存空间对预设类型的数据进行初始化之后,将预设类型的数据转移到JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间。如此,在该网页运行期间,减少WebAssembly执行代码申请的内存空间,提高了该网页运行时的稳定性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的数据处理设备的硬件结构图;
图2为本申请实施例提供的数据转移方法的步骤流程图;
图3为本申请实施例提供的网页的开发流程示意图;
图4为本申请实施例提供的数据转移装置结构示意图之一;
图5为本申请实施例提供的数据转移装置结构示意图之二;
图6为本申请实施例提供的服务器与数据处理设备通信的场景示意图。
图标:200-数据处理设备;140-通信单元;130-处理器;110-数据转移装置;120-存储器;1101-获取模块;1102-第一转移模块;1103-关联模块;1104-判断模块;1105-第二转移模块;100-服务器。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本申请实施例提供的一种实施方式中,Haxe作为一种跨平台的计算机编程语言,基于Haxe开发的应用程序,通过Haxe提供的编译工具可以直接编译出能够发部到桌面端、浏览器以及移动终端等多个平台。目前Haxe支持多有的图形开发,主要使用其中的两个基础库lime和openfl。该lime和openfl库提供了事件捕获、图形渲染以及网络访问等功能,上述功能都依赖于对内存空间的访问。其中lime和openfl连个基础库通过Bytes类进行存储的实现。当Haxe的图形开发程序通过WebAssembly技术发布到浏览器时,往往会遇到内存瓶颈,因此Bytes分配的内存的大小及方式直接影响程序的稳定性。
有鉴于此,本申请实施例提供一种数据转移方法,应用于数据处理设备200。请参照图1,图1为该数据处理设备200的硬件结构图,该数据处理设备200包括通信单元140、处理器130、数据转移装置110和存储器。所述存储器120、处理器130以及通信单元140各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述数据转移装置110装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器120中或固化在所述服务器100的操作系统(operating system,OS)中的软件功能模块。所述处理器130用于执行所述存储器120中存储的可执行模块,例如所述数据转移装置110所包括的软件功能模块及计算机程序等。
其中,所述存储器120可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。其中,存储器120用于存储程序,所述处理器130在接收到执行指令后,执行所述程序。所述通信单元140用于通过所述网络建立所述服务器100与数据处理设备200之间的通信连接,并用于通过所述网络收发数据。
所述处理器130可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
请参照图2,图2为应用于图1所示数据处理设备200的数据转移方法的步骤流程图,以下就所述方法的各个步骤进行详细阐述。
步骤S100,获取一网页文件,所述网页文件包括WebAssembly执行代码和JavaScript执行代码。
可选地,所述网页由包括WebAssembly执行代码和JavaScript执行代码。其中,该WebAssembly执行代码为一种新的编码方式,可以在浏览器中运行的。由于该WebAssembly执行代码是一种低级的类汇编语言,具有紧凑的二进制格式,因此,WebAssembly执行代码在运行的时候可以接近你原生的机器码的运行性能。可以由C/C++等编程语言经Emscripten编译获得,并且可以在Web中运行。该WebAssembly执行代码被设计为可以与JavaScript共存,允许一起协同执行。
步骤S200,在所述网页文件运行过程中,针对所述WebAssembly执行代码中的预设功能单元,所述预设功能单元在申请的第一内存空间对预设类型的数据进行初始化之后,将所述预设类型的数据转移到所述JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间。
可选地,该WebAssembly执行代码在运行的时候,通过Bytes类申请了预设大小的内存空间,并随着程序的运行,该内存空间会进一步的扩大。然后该内存空间扩展到预设阈值,程序会出现不稳定的情况。由于JavaScript中的数据结构Arraybuffer对内存空间不敏感,因此,为了避免WebAssembly执行代码所申请的内存空间持续增长,针对WebAssembly执行代码中预设功能单元,该数据处理设备200在所述预设功能单元申请的第一内存空间对预设类型的数据进行初始化之后,将该预设类型的数据转移到JavaScript执行代码所述申请的第二内存空间进行存储,并释放该第一内存空间。
可选地,为了有序的管理转移到该第二内存空间的预设类型的数据,该数据处理设备200获取该预设类型的数据在第二内存空间的存储位置,并生成该预设类型和该预设类型的数据在第二内存空间的存储位置的对应关系。例如,在一种可能示例中,该数据处理设备200生成唯一标识用于指示该预设数据类型,并通过键值对的形式存储该对应关系。其中,该键值对的键为该唯一标识,该键值对的值为该预设类型的数据在第二内存空间的存储位置。
可选地,该数据处理设备200通过该WebAssembly执行代码获取所述预设类型的数据时,先根据该应关系判断所述预设类型的数据是否转移到所述第二内存空间。若该预设类型的数据转移到该第二内存空间,通过该预设类型从该对应关系中获得该预设类型的数据在第二内存空间中的存储位置,并从该第二内存空间获取所述预设类型的数据。
请参照图3,图3为该网页的开发流程示意图,该网页由Haxe经Haxe编译器编译成C/C++类型的源代码,然后再由Emscripten编译器处理获得WebAssembly执行代码和JavaScript可执行代码。该Haxe计算机编程语言是一种新型的编程语言,其产生的目的一次编写,多平台运行。该Haxe计算机编程语言的源代码,通过Haxe编译器可以编译成多种计算机源代码,包括JavaScript、PHP、C++、C#和Java。
由于Haxe可执行代码使用了Bytes类以实现对内存申请管理,为了在JavaScript可执行代码中能够实现Bytes类相应的功能接口,用以替代Bytes类。JavaScript可执行代码实现了该Bytes类的读写接口。由于需要从Haxe源码到WebAssembly可执行代码以及JavaScript可执行代码,为使得Haxe源码实现调用JavaScript可执行代码中用以替代Bytes类的相应功能接口。在Emscripten编译器的library_browser.js实现了该Bytes类的读写接口,并在Emscripten编译器的emscripten.h文件中进行声明,使得library_browser.js中的功能接口暴露到C/C++层。值得说明的是,该emscripten.h文件中声明的功能接口和library_browser.js文件中的功能接口名称和参数类型完全一致。
进一步地,通过Haxe的CFFI类将JavaScript可执行代码暴露到C/C++层的相关功能接口暴露到Haxe层。新建一C++类,用于对emscripten.h中声明的功能函数做进一步的封装。例如,在一种可能的示例中,该C++类为BytesData。进一步地,新建一个C++类对BytesData做进一步的封装,使得Haxe的CFFI类能够调用BytesData封装的功能接口。例如,在一种可能的示例中,封装BytesData的类叫BytesDataBinding。为了使得Haxe源代码能够调用BytesDataBinding中封装的功能接口,在文件NativeCFFI.hx中对BytesDataBinding封装的功能接口进行声明。
在Haxe源代码中,为了代码的可读性、可维护性以及可扩展性,新建一Haxe类用于对NativeCFFI.hx文件中声明的接口做进一步的封装。例如,在一种可能的示例中,该Haxe类为JsBytes。
进一步地,对Haxe源码中的Bytes类进行修改,新增用于将WebAssembly可执行代码申请内存空间中的数据转移到JavaScript可执行代码中所申请内存空间的第一功能接口;将JavaScript可执行代码中所申请内存空间中的数据转移到WebAssembly可执行代码申请内存空间的功能接口第二功能接口,以及判断预设类型的数据是否转移到JavaScript可执行代码中所申请内存空间的第三功能接口。
进一步地,通过Haxe层Bytes类中新增的第一功能接口、第二功能接口以及第三功能接口修改与Haxe层Bytes类相关的类,使得Haxe层Bytes类相关的类拥有第一功能接口、第二功能接口以及第三功能接口。例如,在一种可能的示例中,与Haxe层Bytes类相关的类包括BytesArray、DataPointer以及ArrayBufferView等类。
进一步地,通过与Haxe层Bytes类相关的类对Haxe层的预设功能接口进行更改。例如,在一种可能的示例中,Haxe层的BitmapData的draw函数接口、BitmapData的__fromImage函数接口以及GLVertexBuffer3d的中uploadFromByteArray函数接口新增了该第一功能接口。
本申请实施例还提供一种数据转移装置110,应用于数据处理设备200。请参照图4,图4为该数据转移装置110的结构示意图之一,该数据转移装置110包括获取模块1101、第一转移模块1102;
该获取模块1101用于获取一网页文件,所述网页文件包括WebAssembly执行代码和JavaScript执行代码。
该第一转移模块1102用于在所述网页文件运行过程中,针对所述WebAssembly执行代码中的预设功能单元,所述预设功能单元在申请的第一内存空间对预设类型的数据进行初始化之后,将所述预设类型的数据转移到所述JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间。
请参照图5,图5为该数据转移装置110的结构示意图之二,该数据转移装置110还包括关联模块1103。该关联模块1103用于获取所述预设类型的数据在第二内存空间的存储位置,并生成所述预设类型和所述预设类型的数据在第二内存空间的存储位置的对应关系。
请再次参照图5,该数据转移装置110还包括判断模块1104和第二转移模块1105,该判断模块1104用于通过所述WebAssembly执行代码获取所述预设类型的数据时,根据所述对应关系判断所述预设类型的数据是否转移到所述第二内存空间;
该第二转移模块1105用于若所述预设类型的数据转移到所述第二内存空间,通过所述预设类型从所述对应关系中获得该预设类型的数据在所述第二内存空间中的存储位置,并从所述第二内存空间获取所述预设类型的数据。
本申请实施例还提供一种服务器,请参照图6,图6为该服务器100与数据处理设备200通信的场景示意图。该服务器存储有预设网页文件,当该服务器100获取到数据处理设备200发送的获取请求时,将所述预设网页文件发送给所述数据处理设备200,使得该数据处理设备200运行所述预设网页文件时,实现本申请实施例提供的数据转移方法。
该数据处理设备200可以是,但不限于,智能手机、个人电脑(personal computer,PC)、平板电脑、个人数字助理(personal digital assistant,PDA)、移动上网设备(mobileInternet device,MID)等。
综上所述,本申请实施例提供的数据转移方法、装置及服务器,应用于数据处理设备200,该数据处理设备200获得包含WebAssembly执行代码和JavaScript执行代码的网页。在网页运行的过程中,针对所述WebAssembly执行代码中的预设功能单元,该预设功能单元在申请的第一内存空间对预设类型的数据进行初始化之后,将预设类型的数据转移到JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间。如此,在该网页运行期间,减少WebAssembly执行代码申请的内存空间,提高了该网页运行时的稳定性。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的各种实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (6)

1.一种数据转移方法,其特征在于,应用于数据处理设备,所述方法包括:
获取一网页文件,所述网页文件包括WebAssembly执行代码和JavaScript执行代码;
在所述网页文件运行过程中,针对所述WebAssembly执行代码中的预设功能单元,在所述预设功能单元申请的第一内存空间对预设类型的数据进行初始化之后,将所述预设类型的数据转移到所述JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间;
获取所述预设类型的数据在第二内存空间的存储位置,并生成所述预设类型和所述预设类型的数据在第二内存空间的存储位置的对应关系;
通过所述WebAssembly执行代码获取所述预设类型的数据时,根据所述对应关系判断所述预设类型的数据是否转移到所述第二内存空间;
若所述预设类型的数据转移到所述第二内存空间,通过所述预设类型从所述对应关系中获得该预设类型的数据在所述第二内存空间中的存储位置,并从所述第二内存空间获取所述预设类型的数据。
2.根据权利要求1所述的数据转移方法,其特征在于,所述WebAssembly执行代码使用了lime和openfl两个基础库,所述lime和openfl两个基础库通过Bytes类申请并管理内存。
3.根据权利要求2所述的数据转移方法,其特征在于,所述JavaScript执行代码实现了所述Bytes类的读写接口,所述方法还包括:
所述WebAssembly执行代码调用所述JavaScript执行代码中和所述Bytes类中对应的接口实现申请并管理内存。
4.根据权利要求2所述的数据转移方法,其特征在于,所述Bytes类新增有将所述第一内存空间中的数据转移到所述第二内存空间的方法,将所述第二内存空间中的数据转移到所述第二内存空间的方法,以及判断所述预设类型的数据是否转移的方法。
5.一种数据转移装置,其特征在于,应用于数据处理设备,所述数据转移装置包括获取模块、第一转移模块;
所述获取模块用于获取一网页文件,所述网页文件包括WebAssembly执行代码和JavaScript执行代码;
所述第一转移模块用于在所述网页文件运行过程中,针对所述WebAssembly执行代码中的预设功能单元,所述预设功能单元在申请的第一内存空间对预设类型的数据进行初始化之后,将所述预设类型的数据转移到所述JavaScript执行代码所申请的第二内存空间进行存储,并释放所述第一内存空间;
所述数据转移装置还包括关联模块;
所述关联模块用于获取所述预设类型的数据在第二内存空间的存储位置,并生成所述预设类型和所述预设类型的数据在第二内存空间的存储位置的对应关系;
所述数据转移装置还包括判断模块和第二转移模块;
所述判断模块用于通过所述WebAssembly执行代码获取所述预设类型的数据时,根据所述对应关系判断所述预设类型的数据是否转移到所述第二内存空间;
所述第二转移模块用于若所述预设类型的数据转移到所述第二内存空间,通过所述预设类型从所述对应关系中获得该预设类型的数据在所述第二内存空间中的存储位置,并从所述第二内存空间获取所述预设类型的数据。
6.一种服务器,其特征在于,所述服务器存储有预设网页文件,当所述服务器获取到数据处理设备发送的获取请求时,将所述预设网页文件发送给所述数据处理设备,使得所述数据处理设备运行所述预设网页文件时,实现权利要求1-4任一项所述的数据转移方法。
CN201910335773.8A 2019-04-24 2019-04-24 数据转移方法、装置及服务器 Active CN110058904B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910335773.8A CN110058904B (zh) 2019-04-24 2019-04-24 数据转移方法、装置及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910335773.8A CN110058904B (zh) 2019-04-24 2019-04-24 数据转移方法、装置及服务器

Publications (2)

Publication Number Publication Date
CN110058904A CN110058904A (zh) 2019-07-26
CN110058904B true CN110058904B (zh) 2023-04-04

Family

ID=67320634

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910335773.8A Active CN110058904B (zh) 2019-04-24 2019-04-24 数据转移方法、装置及服务器

Country Status (1)

Country Link
CN (1) CN110058904B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489942B (zh) * 2019-08-06 2021-03-02 南开大学 一种WebAssembly文件的处理方法及系统
CN110737532B (zh) * 2019-10-15 2022-04-12 四川长虹电器股份有限公司 一种Android电视浏览器内存优化的方法
CN110888822B (zh) * 2019-12-03 2022-09-16 北京小米智能科技有限公司 内存处理方法、装置及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108563517B (zh) * 2018-03-30 2020-11-03 腾讯科技(深圳)有限公司 系统接口的调用方法及装置
CN108563728B (zh) * 2018-04-04 2021-01-19 东软医疗系统股份有限公司 一种通过浏览器上传医学影像文件的方法和装置
CN108614960B (zh) * 2018-05-11 2020-06-16 西北大学 一种基于前端字节码技术的JavaScript虚拟化保护方法

Also Published As

Publication number Publication date
CN110058904A (zh) 2019-07-26

Similar Documents

Publication Publication Date Title
CN110058904B (zh) 数据转移方法、装置及服务器
KR102183185B1 (ko) 애플리케이션 프로그래밍 인터페이스들에 대한 런타임 액세스의 제어
CN108647032B (zh) 应用加载方法及装置、计算机装置和计算机可读存储介质
CN111124288B (zh) 一种vpd存储管理方法、装置、设备及可读存储介质
CN112817657B (zh) 一种应用程序启动项加载方法、装置、系统及存储介质
CN103885814A (zh) 在x86架构上运行ARM APK的模拟器装置和方法
CN111399840A (zh) 一种模块开发方法及装置
CN106775781B (zh) 减小应用安装包的方法、装置及电子设备
CN111767056A (zh) 一种源码编译方法、可执行文件运行方法及终端设备
CN109032612B (zh) 混合型应用的接口调用方法、装置及计算机可读存储介质
CN112328241B (zh) 一种应用程序开发中创建Android库模块依赖关系的方法及装置
CN110020343B (zh) 网页编码格式的确定方法和装置
CN107092472B (zh) 一种动态发布方法及设备
CN110941443B (zh) 修改sdk中文件名的方法、装置及电子设备
CN106775608B (zh) 独立系统进程的实现方法和装置
CN116166457A (zh) 数据处理方法及相关设备
CN115629795A (zh) 一种可执行文件的配置方法、装置及电子设备
JP5165234B2 (ja) ジャバ言語におけるメソッド参照のサポート
CN112052051A (zh) 插件处理方法、装置、设备及存储介质
CN106897588B (zh) 一种标签函数的处理方法及装置
CN112749152A (zh) 智能合约的数据迁移方法、装置及存储介质
CN114443316B (zh) 一种对象访问方法、装置及电子设备
CN107092485B (zh) 一种Tab标签动态更新方法及装置
CN107247579B (zh) 一种elf文件映像基地址的计算方法及装置
CN114895921B (zh) 文件处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant