Skip to content

Commit 163397a

Browse files
indutnyaddaleax
authored andcommitted
process: add process.memoryUsage.external
PR-URL: #9587 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Johan Bergström <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Roman Reiss <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
1 parent d83cb48 commit 163397a

File tree

4 files changed

+11
-1
lines changed

4 files changed

+11
-1
lines changed

doc/api/process.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -1175,6 +1175,7 @@ added: v0.1.16
11751175
* `rss` {Integer}
11761176
* `heapTotal` {Integer}
11771177
* `heapUsed` {Integer}
1178+
* `external` {Integer}
11781179

11791180
The `process.memoryUsage()` method returns an object describing the memory usage
11801181
of the Node.js process measured in bytes.
@@ -1191,11 +1192,14 @@ Will generate:
11911192
{
11921193
rss: 4935680,
11931194
heapTotal: 1826816,
1194-
heapUsed: 650472
1195+
heapUsed: 650472,
1196+
external: 49879
11951197
}
11961198
```
11971199

11981200
`heapTotal` and `heapUsed` refer to V8's memory usage.
1201+
`external` refers to the memory usage of C++ objects bound to JavaScript
1202+
objects managed by V8.
11991203

12001204
## process.nextTick(callback[, ...args])
12011205
<!-- YAML

src/env.h

+1
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ namespace node {
103103
V(exponent_string, "exponent") \
104104
V(exports_string, "exports") \
105105
V(ext_key_usage_string, "ext_key_usage") \
106+
V(external_string, "external") \
106107
V(external_stream_string, "_externalStream") \
107108
V(family_string, "family") \
108109
V(fatal_exception_string, "_fatalException") \

src/node.cc

+4
Original file line numberDiff line numberDiff line change
@@ -2247,11 +2247,15 @@ void MemoryUsage(const FunctionCallbackInfo<Value>& args) {
22472247
Number::New(env->isolate(), v8_heap_stats.total_heap_size());
22482248
Local<Number> heap_used =
22492249
Number::New(env->isolate(), v8_heap_stats.used_heap_size());
2250+
Local<Number> external_mem =
2251+
Number::New(env->isolate(),
2252+
env->isolate()->AdjustAmountOfExternalAllocatedMemory(0));
22502253

22512254
Local<Object> info = Object::New(env->isolate());
22522255
info->Set(env->rss_string(), Number::New(env->isolate(), rss));
22532256
info->Set(env->heap_total_string(), heap_total);
22542257
info->Set(env->heap_used_string(), heap_used);
2258+
info->Set(env->external_string(), external_mem);
22552259

22562260
args.GetReturnValue().Set(info);
22572261
}

test/parallel/test-memory-usage.js

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ var r = process.memoryUsage();
66
assert.ok(r.rss > 0);
77
assert.ok(r.heapTotal > 0);
88
assert.ok(r.heapUsed > 0);
9+
assert.ok(r.external > 0);

0 commit comments

Comments
 (0)