利用Chrome的Heap Snapshot功能分析一个时间段内的内存占用率

举报
Jerry Wang 发表于 2021/10/13 22:20:26 2021/10/13
【摘要】 在下图测试代码第13行和第16行设断点. 以调试方式运行,首先断点在第13行处触发:打开Chrome开发者工具,点击Profiles tab, 再点击按钮"Take Snapshot":生成一个Snapshot, ID为3:继续以调试mode执行代码到第16行,点击按钮"Take heap snapshot"以生成第二个snapshot。从下拉菜单里选择"Objects allocated ...

在下图测试代码第13行和第16行设断点. 以调试方式运行,首先断点在第13行处触发:

打开Chrome开发者工具,点击Profiles tab, 再点击按钮"Take Snapshot":

生成一个Snapshot, ID为3:

继续以调试mode执行代码到第16行,点击按钮"Take heap snapshot"以生成第二个snapshot。从下拉菜单里选择"Objects allocated between Snapshot 3 and Snapshot 4":

在下图Summary里用变量名"arra"做filter,即可找出在snapshot3和snapshot4之间内存占用最高的变量arra:

将鼠标停留在arra上即可查看这个变量包含的内容:

使用Chrome开发者工具的DOM断点功能可以让您快速找到修改了某一个DOM元素的Javascript代码。

在Chrome开发者工具里,选中想要监控的DOM元素,点击右键,选择Break on->Attributes modifications:

之后在DOM Breakpoints的tab里能看到对应的断点:

然后回到Chrome里继续操作,Chrome开发者工具的调试器就会自动在DOM的属性发生变化的地方停下来:

从调试器的调用上下文能了解到是下图第17行的hide方法设置了display:none的属性导致DOM断点的触发。

CDS view注解解析 - @Environment.systemField

下面的CDS view使用到了@Environment.systemField这个注解,定义了两个参数#SYSTEM_LANGUAGE和#USER。

这个view从CRM物料主数据的产品抬头表COMM_PRODUCT读取product_id, product_type,以及comm_prshtext表里读取产品的描述信息,存储在字段description里。


@AbapCatalog.sqlViewName: 'zprdtext' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'Jerry product description'  define view Zproductdescription with parameters @Consumption.hidden: true @Environment.systemField: #SYSTEM_LANGUAGE P_Language : syLangu, @Consumption.hidden: true @Environment.systemField : #USER p_uname : syst_uname as select from comm_product as product inner join comm_prshtext as _text on product.product_guid = _text.product_guid { key product.product_id, product.product_type, _text.short_text as description } where product.upname = :p_uname and _text.langu = :p_Language

当我们在ABAP Development Studio里预览该view时, 我们会被要求给这两个参数指定值:

在Open SQL里,这两个参数会自动被分别赋以ABAP编程语言里系统变量sy-langu和sy-uname的值。


data: lt_result TYPE TABLE OF Zproductdescription. SELECT * FROM Zproductdescription INTO TABLE @lt_result .

这一点我们可以通过使用事务码ST05得到的trace里得到确认:在运行时P_LANGUAGE被赋以了sy-langu的值E,而P_UNAME被赋以sy-uname的值WANGJER.

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。