CN117785639A - 一种浏览器页面内存占用瓶颈定位方法 - Google Patents

一种浏览器页面内存占用瓶颈定位方法 Download PDF

Info

Publication number
CN117785639A
CN117785639A CN202311835069.1A CN202311835069A CN117785639A CN 117785639 A CN117785639 A CN 117785639A CN 202311835069 A CN202311835069 A CN 202311835069A CN 117785639 A CN117785639 A CN 117785639A
Authority
CN
China
Prior art keywords
memory
type
function
key
occupation
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.)
Pending
Application number
CN202311835069.1A
Other languages
English (en)
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.)
Beijing Bailong Mayun Technology Co ltd
Original Assignee
Beijing Bailong Mayun 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 Beijing Bailong Mayun Technology Co ltd filed Critical Beijing Bailong Mayun Technology Co ltd
Priority to CN202311835069.1A priority Critical patent/CN117785639A/zh
Publication of CN117785639A publication Critical patent/CN117785639A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种浏览器页面内存占用瓶颈定位方法,具体涉及网页端JS堆占用情况领域,通过初始化不同简单数据类型和字符占用内存变量对象,能够获取内存占用的统计结果,并根据统计结果进行优化和调整,减少内存占用,利用递归函数将复杂问题分解为更简单的子问题,使得解决方案更加模块化和可管理,有助于浏览器页面内存的可维护性,利用遍历键值对的循环迭代进行类型判断,构建起完整的数据结构,使得数据的整合和处理更加方便和高效,避免在浏览器页面内存运行过程中出现类型错误和非预期的行为,从而提高浏览器页面的健壮性,利用输出内存占用结果分析视图帮助开发人员分析页面的内存占用情况,定位内存瓶颈,并进行优化。

Description

一种浏览器页面内存占用瓶颈定位方法
技术领域
本发明涉及网页端JS堆占用情况领域,更具体地说,本发明涉及一种浏览器页面内存占用瓶颈定位方法。
背景技术
随着浏览器页面的发展,页面内存占用的问题越来越受到关注,随着页面功能的增加,数据量的增加和用户交互的增加,页面内存占用的问题也越来越突出。
页面内存占用过高会导致页面加载缓慢、响应时间延长,甚至可能导致页面崩溃和卡顿,页面内存占用过高导致设备性能下降、耗电量增加的问题,并增加网络传输成本和用户的流量消耗。
根据统计结果进行优化和调整,减少内存占用,利用递归函数将复杂问题分解为更简单的子问题,有助于浏览器页面内存的可维护性,避免在浏览器页面内存运行过程中出现类型错误和非预期的行为,提高浏览器页面的健壮性。
发明内容
本发明针对现有技术中存在的技术问题,提供一种浏览器页面内存占用瓶颈定位方法,通过输出内存占用结果分析视图帮助开发人员分析页面的内存占用情况,定位内存瓶颈,并进行优化,以解决上述背景技术中提出的问题。
本发明解决上述技术问题的技术方案如下:一种浏览器页面内存占用瓶颈定位方法,包括以下步骤:
S101.准备好程序源码和内存占用SDK,在程序源码中引入内存占用SDK,并初始化不同简单数据类型和字符占用内存变量对象;
S102.定义递归函数,将接收变量作为参数,并对其进行递归操作,用于函数内部对输入的参数进行重复的操作;
S103.遍历源对象的每个键值对,利用for循环通过迭代器遍历对象的每个键值对,对于每个键值对,获取键和值,并进行类型判断;
S104.遍历计算结果,获取存储内存大小结果的字典以及数据结构,通过设置reverse参数控制按照从大到小的顺序进行排序,按照排序后的结果逐行输出,形成表格和报告的形式;
在一个优选地实施方式中,所述S101中,安装浏览器以及Vscode代码编辑器,并准备好程序源码和内存占用SDK,在程序源码中引入内存占用SDK,并进行初始化,所述初始化利用init作为内存占用SDK的初始化方法,输入apiKey和environment作为初始化函数,用于替换用户的实际API密钥,根据ECMAScript规范,定义不同数据类型的内存占用值,包括CMA_SIZES.STRING、ECMA_SIZES.BOOLEAN、ECMA_SIZES.NUMBER,输入浏览器全局对象window,所述浏览器全局对象window指javaScript中的全局对象,代表浏览器窗口,包括浏览器窗口的各种属性和方法,其中包含浏览器窗口的尺寸、地址栏信息、文档对象,使用javaScript中的for in函数遍历目标变量对象,用于获取变量的类型和值,根据变量的类型和值,使用定义后的内存占用值获取变量的内存占用大小,对于字符串类型,其中每个字符占用2个字节,内存占用大小=字符串长度*2,对于数字类型,其中数字类型占用8个字节,内存占用大小=8,对于布尔值类型,其中布尔值类型占用4个字节,内存占用大小=4,记录变量的类型、值和占用内存大小,对记录的数据进行分析和整理,分析类型的数据占用内存较多,将同一类型的数据进行归类和汇总,得出内存占用的统计结果,并根据统计结果进行优化和调整,减少内存占用。
在一个优选地实施方式中,所述S102中,定义递归函数,用于函数内部调用自身的函数,该函数将接收变量作为参数,并对其进行递归操作,用于函数内部对输入的参数进行重复的操作,所述递归函数应包含递归的终止条件以及递归调用自身的情况,所述递归的终止条件为变量为空以及达到特定状态的情况,其中特定状态对于浏览器列表为空时以及对于浏览器树结构达到叶子节点时,达到终止条件,函数执行返回操作,对传入变量的子结构进行递归操作,通过对变量的属性进行遍历,并对每个属性进行递归调用,调用递归函数,并将传入的变量作为参数传递给递归函数。
在一个优选地实施方式中,所述S103中,遍历源对象的每个键值对,其中源对象的每个键值对包括键和对应的值,利用for循环通过迭代器遍历对象的每个键值对,对于每个键值对,获取键和值,并进行类型判断,其是否为简单数据类型和二进制数据类型,当是简单数据类型和二进制数据类型时,对当前键值进行内存大小计算,将计算结果添加到目标对象对应的键值下,具体内存大小计算步骤为:对于int数据类型,利用int.bit_length()返回整数的二进制表示位数并除以8,用于获取内存字节大小,对于float数据类型,直接认为其占用8个字节的内存大小,对于str数据类型,利用str.encode('utf-8')将字符串编码为字节串,用于获取内存字节大小,对于二进制数据类型,利用len(bytes_data)获取字节串的长度作为内存大小,对于复杂类型的数据,调用S102中递归函数进行递归执行上述步骤。
在一个优选地实施方式中,所述S104中,遍历计算结果,将键值对转换为展示的格式,获取存储内存大小结果的字典以及数据结构,使用循环遍历字典中的每个键值对,在每次循环中,获取当前键值对的键和对应的内存大小,通过字符串格式化和拼接方法将键和内存大小转换为字符串格式,使用sorted函数对转换后的列表进行排序,通过key参数来指定排序的依据,所述依据为按照每个字符串中的内存大小进行排序,通过设置reverse参数控制按照从大到小的顺序进行排序,按照排序后的结果逐行输出,形成表格和报告的形式,使用了字符串的ljust和rjust方法对齐输出的内容。
本发明的有益效果是:通过初始化不同简单数据类型和字符占用内存变量对象,能够获取内存占用的统计结果,并根据统计结果进行优化和调整,减少内存占用,利用递归函数将复杂问题分解为更简单的子问题,使得解决方案更加模块化和可管理,有助于浏览器页面内存的可维护性,利用遍历键值对的循环迭代进行类型判断,构建起完整的数据结构,使得数据的整合和处理更加方便和高效,避免在浏览器页面内存运行过程中出现类型错误和非预期的行为,从而提高浏览器页面的健壮性,利用输出内存占用结果分析视图帮助开发人员分析页面的内存占用情况,定位内存瓶颈,并进行优化。
附图说明
图1为本发明方法流程图;
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请的描述中,术语“例如”一词用来表示“用作例子、例证或说明”。本申请中被描述为“例如”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
本实施例提供了如图1所示一种浏览器页面内存占用瓶颈定位方法,具体包括以下步骤:
S101.准备好程序源码和内存占用SDK,在程序源码中引入内存占用SDK,并初始化不同简单数据类型和字符占用内存变量对象;
进一步地,安装浏览器以及Vscode代码编辑器,并准备好程序源码和内存占用SDK,在程序源码中引入内存占用SDK,并进行初始化,所述初始化利用init作为内存占用SDK的初始化方法,输入apiKey和environment作为初始化函数,用于替换用户的实际API密钥,根据ECMAScript规范,定义不同数据类型的内存占用值,包括CMA_SIZES.STRING、ECMA_SIZES.BOOLEAN、ECMA_SIZES.NUMBER,输入浏览器全局对象window,所述浏览器全局对象window指javaScript中的全局对象,代表浏览器窗口,包括浏览器窗口的各种属性和方法,其中包含浏览器窗口的尺寸、地址栏信息、文档对象,使用javaScript中的for in函数遍历目标变量对象,用于获取变量的类型和值,根据变量的类型和值,使用定义后的内存占用值获取变量的内存占用大小,对于字符串类型,其中每个字符占用2个字节,内存占用大小=字符串长度*2,对于数字类型,其中数字类型占用8个字节,内存占用大小=8,对于布尔值类型,其中布尔值类型占用4个字节,内存占用大小=4,记录变量的类型、值和占用内存大小,对记录的数据进行分析和整理,分析类型的数据占用内存较多,将同一类型的数据进行归类和汇总,得出内存占用的统计结果,并根据统计结果进行优化和调整,减少内存占用。
S102.定义递归函数,将接收变量作为参数,并对其进行递归操作,用于函数内部对输入的参数进行重复的操作;
进一步地,定义递归函数,用于函数内部调用自身的函数,该函数将接收变量作为参数,并对其进行递归操作,用于函数内部对输入的参数进行重复的操作,所述递归函数应包含递归的终止条件以及递归调用自身的情况,所述递归的终止条件为变量为空以及达到特定状态的情况,其中特定状态对于浏览器列表为空时以及对于浏览器树结构达到叶子节点时,达到终止条件,函数执行返回操作,对传入变量的子结构进行递归操作,通过对变量的属性进行遍历,并对每个属性进行递归调用,调用递归函数,并将传入的变量作为参数传递给递归函数。
S103.遍历源对象的每个键值对,利用for循环通过迭代器遍历对象的每个键值对,对于每个键值对,获取键和值,并进行类型判断;
进一步地,遍历源对象的每个键值对,其中源对象的每个键值对包括键和对应的值,利用for循环通过迭代器遍历对象的每个键值对,对于每个键值对,获取键和值,并进行类型判断,其是否为简单数据类型和二进制数据类型,当是简单数据类型和二进制数据类型时,对当前键值进行内存大小计算,将计算结果添加到目标对象对应的键值下,具体内存大小计算步骤为:对于int数据类型,利用int.bit_length()返回整数的二进制表示位数并除以8,用于获取内存字节大小,对于float数据类型,直接认为其占用8个字节的内存大小,对于str数据类型,利用str.encode('utf-8')将字符串编码为字节串,用于获取内存字节大小,对于二进制数据类型,利用len(bytes_data)获取字节串的长度作为内存大小,对于复杂类型的数据,调用S102中递归函数进行递归执行上述步骤。
S104.遍历计算结果,获取存储内存大小结果的字典以及数据结构,通过设置reverse参数控制按照从大到小的顺序进行排序,按照排序后的结果逐行输出,形成表格和报告的形式;
进一步地,遍历计算结果,将键值对转换为展示的格式,获取存储内存大小结果的字典以及数据结构,使用循环遍历字典中的每个键值对,在每次循环中,获取当前键值对的键和对应的内存大小,通过字符串格式化和拼接方法将键和内存大小转换为字符串格式,使用sorted函数对转换后的列表进行排序,通过key参数来指定排序的依据,所述依据为按照每个字符串中的内存大小进行排序,通过设置reverse参数控制按照从大到小的顺序进行排序,按照排序后的结果逐行输出,形成表格和报告的形式,使用了字符串的ljust和rjust方法对齐输出的内容。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (7)

1.一种浏览器页面内存占用瓶颈定位方法,其特征在于,具体包括以下步骤:
S101.准备好程序源码和内存占用SDK,在程序源码中引入内存占用SDK,并初始化不同简单数据类型和字符占用内存变量对象;
S102.定义递归函数,将接收变量作为参数,并对其进行递归操作,用于函数内部对输入的参数进行重复的操作;
S103.遍历源对象的每个键值对,利用for循环通过迭代器遍历对象的每个键值对,对于每个键值对,获取键和值,并进行类型判断;
S104.遍历计算结果,获取存储内存大小结果的字典以及数据结构,通过设置reverse参数控制按照从大到小的顺序进行排序,按照排序后的结果逐行输出,形成表格和报告的形式。
2.根据权利要求1所述的一种浏览器页面内存占用瓶颈定位方法,其特征在于:所述S101中,安装浏览器以及Vscode代码编辑器,并准备好程序源码和内存占用SDK,在程序源码中引入内存占用SDK,并进行初始化,所述初始化利用init作为内存占用SDK的初始化方法,输入apiKey和environment作为初始化函数,用于替换用户的实际API密钥,根据ECMAScript规范,定义不同数据类型的内存占用值,包括CMA_SIZES.STRING、ECMA_SIZES.BOOLEAN、ECMA_SIZES.NUMBER,输入浏览器全局对象window,所述浏览器全局对象window指javaScript中的全局对象,代表浏览器窗口,包括浏览器窗口的各种属性和方法,其中包含浏览器窗口的尺寸、地址栏信息、文档对象,使用javaScript中的for in函数遍历目标变量对象,用于获取变量的类型和值,根据变量的类型和值,使用定义后的内存占用值获取变量的内存占用大小。
3.根据权利要求2所述的一种浏览器页面内存占用瓶颈定位方法,其特征在于:根据变量的类型和值,并获取变量的内存占用大小的步骤为:对于字符串类型,其中每个字符占用2个字节,内存占用大小=字符串长度*2,对于数字类型,其中数字类型占用8个字节,内存占用大小=8,对于布尔值类型,其中布尔值类型占用4个字节,内存占用大小=4,记录变量的类型、值和占用内存大小,对记录的数据进行分析和整理,分析类型的数据占用内存较多,将同一类型的数据进行归类和汇总,得出内存占用的统计结果,并根据统计结果进行优化和调整,减少内存占用。
4.根据权利要求1所述的一种浏览器页面内存占用瓶颈定位方法,其特征在于:所述S102中,定义递归函数,用于函数内部调用自身的函数,该函数将接收变量作为参数,并对其进行递归操作,用于函数内部对输入的参数进行重复的操作,所述递归函数应包含递归的终止条件以及递归调用自身的情况,所述递归的终止条件为变量为空以及达到特定状态的情况,其中特定状态对于浏览器列表为空时以及对于浏览器树结构达到叶子节点时,达到终止条件,函数执行返回操作,对传入变量的子结构进行递归操作,通过对变量的属性进行遍历,并对每个属性进行递归调用,调用递归函数,并将传入的变量作为参数传递给递归函数。
5.根据权利要求1所述的一种浏览器页面内存占用瓶颈定位方法,其特征在于:所述S103中,遍历源对象的每个键值对,其中源对象的每个键值对包括键和对应的值,利用for循环通过迭代器遍历对象的每个键值对,对于每个键值对,获取键和值,并进行类型判断,其是否为简单数据类型和二进制数据类型,当是简单数据类型和二进制数据类型时,对当前键值进行内存大小计算,将计算结果添加到目标对象对应的键值下。
6.根据权利要求1所述的一种浏览器页面内存占用瓶颈定位方法,其特征在于:具体内存大小计算步骤为:对于int数据类型,利用int.bit_length()返回整数的二进制表示位数并除以8,用于获取内存字节大小,对于float数据类型,直接认为其占用8个字节的内存大小,对于str数据类型,利用str.encode('utf-8')将字符串编码为字节串,用于获取内存字节大小,对于二进制数据类型,利用len(bytes_data)获取字节串的长度作为内存大小,对于复杂类型的数据,调用S102中递归函数进行递归执行上述步骤。
7.根据权利要求1所述的一种浏览器页面内存占用瓶颈定位方法,其特征在于:所述S104中,遍历计算结果,将键值对转换为展示的格式,获取存储内存大小结果的字典以及数据结构,使用循环遍历字典中的每个键值对,在每次循环中,获取当前键值对的键和对应的内存大小,通过字符串格式化和拼接方法将键和内存大小转换为字符串格式,使用sorted函数对转换后的列表进行排序,通过key参数来指定排序的依据,所述依据为按照每个字符串中的内存大小进行排序,通过设置reverse参数控制按照从大到小的顺序进行排序,按照排序后的结果逐行输出,形成表格和报告的形式,使用了字符串的ljust和rjust方法对齐输出的内容。
CN202311835069.1A 2023-12-28 2023-12-28 一种浏览器页面内存占用瓶颈定位方法 Pending CN117785639A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311835069.1A CN117785639A (zh) 2023-12-28 2023-12-28 一种浏览器页面内存占用瓶颈定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311835069.1A CN117785639A (zh) 2023-12-28 2023-12-28 一种浏览器页面内存占用瓶颈定位方法

Publications (1)

Publication Number Publication Date
CN117785639A true CN117785639A (zh) 2024-03-29

Family

ID=90397967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311835069.1A Pending CN117785639A (zh) 2023-12-28 2023-12-28 一种浏览器页面内存占用瓶颈定位方法

Country Status (1)

Country Link
CN (1) CN117785639A (zh)

Similar Documents

Publication Publication Date Title
CN108628898B (zh) 数据入库的方法、装置和设备
CN113591093B (zh) 基于自注意力机制的工业软件漏洞检测方法
CN106951231A (zh) 一种计算机软件开发方法及装置
CN111562920A (zh) 小程序代码相似度确定方法、装置、服务器及存储介质
CN111488422A (zh) 一种结构化数据样本的增量方法、装置、电子设备及介质
CN113158189A (zh) 一种恶意软件分析报告生成方法、装置、设备和介质
CN112181430A (zh) 代码变更统计方法、装置、电子设备及存储介质
CN111273903B (zh) 网页制作方法、装置、计算机设备及计算机存储介质
CN113821657A (zh) 基于人工智能的图像处理模型训练方法及图像处理方法
CN110442353B (zh) 一种安装包管理的方法、装置及电子设备
CN117785639A (zh) 一种浏览器页面内存占用瓶颈定位方法
CN106325849B (zh) 数据处理方法及数据处理装置
US11676002B2 (en) Neural network accelerating method and device with efficient usage of total video memory size of GPUs
CN114201961A (zh) 一种注释预测方法、装置、设备及可读存储介质
CN113704108A (zh) 一种相似代码检测方法及装置、电子设备、存储介质
CN112559465A (zh) 一种日志压缩方法、装置、电子设备及存储介质
CN109992293B (zh) Android系统组件版本信息的组装方法及装置
CN111736806A (zh) 控件注入方法、装置及终端设备
CN111143560A (zh) 一种短文本分类方法、终端设备及存储介质
CN111144086B (zh) 一种日志格式化方法及装置、电子设备、存储介质
CN110597517A (zh) 动态解析mat文件的方法及装置
CN115378824B (zh) 模型相似度确定方法、装置、设备及存储介质
CN115687736B (zh) 一种web应用的搜索方法、装置及电子设备
CN116304920B (zh) 一种流数据分类模型的优化方法及装置
CN113283229B (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