[发明专利]按需加载动态脚本语言代码以减少内存使用有效
申请号: | 201911006130.5 | 申请日: | 2016-02-16 |
公开(公告)号: | CN110941456B | 公开(公告)日: | 2022-09-23 |
发明(设计)人: | 王海川;叶寒栋;吴芃 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F8/41 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 加载 动态 脚本语言 代码 减少 内存 使用 | ||
一种用于减少存储用动态脚本语言编写成的应用程序所需的内存空间量的方法和系统,其由计算机实现,将程序模块加载到内存中并从所述程序模块中移除一类程序代码,如调试信息或函数定义等。所述方法和系统还接收针对调试信息的请求,或函数调用或查询,并确定对应程序代码是否在所述内存中;若不在,则识别所述程序模块在存储器中的存储位置,并将包含对应程序代码的另一个副本加载到所述内存中;将所述对应程序代码加载并复制到内存中的所述程序模块,并响应所述请求。
相关申请案交叉申请
本发明要求于2015年2月23日递交的发明名称为“按需加载动态脚本语言代码以减少内存使用”的第14/629,197号美国非临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。
技术领域
本文大体涉及动态脚本语言代码的编译和加载,更具体地,涉及通过按需编译和加载用动态脚本语言编写成的应用程序源代码以减少内存使用。
背景技术
动态脚本语言广泛应用于许多行业和学术领域。例如,JavaScript被广泛认为是构建客户端Web应用程序的主要计算机编程语言;PHP通常是用于建立服务器端Web应用程序的骨干;Python广泛应用于建立高级和低级应用程序;Lua已广泛应用在游戏行业和嵌入式系统中;R和Matlab已在特定应用中普及。
一般情况下,动态脚本语言的性能带来忧虑。例如,用动态脚本语言编写成的应用程序通常运行较慢,且比基于静态语言的应用程序使用更多的内存。但在许多场景下,内存使用至关重要。例如,在典型的嵌入式系统中,若应用程序所需的内存多过可用内存,应用程序将会崩溃。
应用程序使用的内存通常包括代码段和数据段。在许多应用程序中,所述代码段最多可使用所需总内存的一半。因此,减少代码段所需内存量是减少总应用程序内存使用的有效途径。
现有的减少代码段所需内存量的方案包括重写或重建应用程序,以移除不必要的代码。此方案可行,因为应用程序通常包含应用程序的所有可能特征的源代码,即使通常不执行某些特征。重写或重建代码能保证应用程序中只包含必要的代码。
然而,重写或重建代码是相对劳动密集型的,因此,相对昂贵。另外,纯粹基于静态信息确定有关代码段的有效性和必要性是不是很明确。只有使用运行时可用的信息才可能更确定。
动态脚本语言使用更多内存空间的另一原因在于:通常默认动态脚本语言以编译的对象代码或字节码在内存中存储应用程序的所有相关调试信息。在某些情况下,所述调试信息占用编程代码使用的内存空间的三分之一以上。但是,所述调试信息通常很少使用,例如,当应用程序执行期间出现错误或当执行期间调用了反射功能时使用。
现有的减少代码段所需内存量的方案还包括通过将应用程序源代码预编译成字节码,以移除调试信息。例如,可使用“-s”命令拓展预编译Lua源代码,以除去所述源代码中的所有调试信息,虽然对等方法在某些动态脚本语言中不可用。但是,使用这一方法不允许在运行时获取所述调试信息。此外,出现运行时错误时,应用程序不能上报有用信息,如出现错误的代码行数、与所述错误相关联的变量名等。
在一些情况下,由于运行时所需的某些应用特征取决于调试信息的可用性,因此从代码中除去调试信息是不可接受的方案。进一步地,移除调试信息会增加部署复杂性,因为在应用程序加载到内存之前,需要通过“-s”选项进行额外预编译步骤以到达中间阶段(即,字节码),而通常动态脚本语言源代码已直接执行。
此外,经常使用常见数据压缩算法对动态脚本语言代码进行压缩。虽然预编译字节码的未压缩版本比已压缩的源代码占用的内存少,但压缩所述预编译代码之后,可能占用比原始文本格式的源代码更多的内存空间。因此,在某些应用程序中,例如在闪存有限的嵌入式系统中,理想的是存储源代码而非预编译字节码,以进一步减少所述内存量。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911006130.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种变压器选相投切控制装置动模试验系统
- 下一篇:电网的监测报警方法及装置