我正在 NodeJS api 上运行笑话单元和集成测试,我面临着一些可能存在内存泄漏的问题。我尝试将 Jest 从 26.3.2 升级到 27.5.1,但这并没有多大帮助。我从 Chrome 控制台拍摄了一些堆快照。
快照2
快照4
从上面的快照我可以看到使用量的增长非常高。但我无法理解出了什么问题。
我发现 String、Object 和 JSBufferData 出了问题。但不确定问题是什么。
库的字符串化版本的多个调用/行,但是它来自哪里以及为什么?
如果是对象:
屏幕截图中的对象可能来自一个库,我使用countries-list它来获取国家/地区列表以查找 ISO 名称。
最后是 JSBufferData,它指向类似 URLSearchParam 的内容,但我没有在应用程序中的任何位置使用上述任何对象/库:

我使用的堆栈:
NodeJS:16.14.2 笑话:27.5.1 笑话串行运行器:1.2.0
我们要求将PHP版本(5.3.25)升级到当前的稳定版本5.6.17.因此,为此我们需要找到哪种方法最好.
除了升级之外,在执行此操作时我们应该记住所有事情.
如果您有任何我们可以参考的文件,那将是件好事.
我目前正在为以下方法编写单元测试
@Autowired
private RequestConfig requestConfig;
@Autowired
private RetryTemplate retryTemplate;
public ResponseEntity<String> makeGetServiceCall(String serviceUrl) throws Exception {
try {
return retryTemplate.execute(retryContext -> {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = requestConfig.createHttpHeaders();
HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
ResponseEntity<String> response = restTemplate.exchange(serviceUrl, HttpMethod.GET, entity, String.class);
return response;
});
} catch (Exception e) {
throw new Exception("Generic exception while makeGetServiceCall due to" + e + serviceUrl);
}
}
Run Code Online (Sandbox Code Playgroud)
更新方法:
@Autowired
private RequestConfig requestConfig;
@Autowired
private RetryTemplate retryTemplate;
@Autowired
private RestTemplate restTemplate;
public …Run Code Online (Sandbox Code Playgroud) 在shell脚本中,我有下面的对象数组:
response={
"product": "BIG MAC",
"objects": [
{
"qty": 10,
"size": 32
},
{
"qty": 20,
"size": 53
},
{
"qty": 10,
"size": 54
}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在写一个jq函数来获取总量。
data=$( echo $response | jq '.objects[] | .qty ' )
Run Code Online (Sandbox Code Playgroud)
这给了我一行数量,例如
10 20 10
Run Code Online (Sandbox Code Playgroud)
我如何总结这些来获得价值:
40
Run Code Online (Sandbox Code Playgroud) java ×1
jestjs ×1
jq ×1
memory-leaks ×1
mockito ×1
php ×1
php-5.6 ×1
resttemplate ×1
shell ×1
testing ×1
unit-testing ×1
upgrade ×1