Skip to content

Commit 1226ce4

Browse files
indutnyMylesBorins
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 dcccc68 commit 1226ce4

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
@@ -1165,6 +1165,7 @@ added: v0.1.16
11651165
* `rss` {Integer}
11661166
* `heapTotal` {Integer}
11671167
* `heapUsed` {Integer}
1168+
* `external` {Integer}
11681169

11691170
The `process.memoryUsage()` method returns an object describing the memory usage
11701171
of the Node.js process measured in bytes.
@@ -1181,11 +1182,14 @@ Will generate:
11811182
{
11821183
rss: 4935680,
11831184
heapTotal: 1826816,
1184-
heapUsed: 650472
1185+
heapUsed: 650472,
1186+
external: 49879
11851187
}
11861188
```
11871189

11881190
`heapTotal` and `heapUsed` refer to V8's memory usage.
1191+
`external` refers to the memory usage of C++ objects bound to JavaScript
1192+
objects managed by V8.
11891193

11901194
## process.nextTick(callback[, ...args])
11911195
<!-- YAML

src/env.h

+1
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ namespace node {
105105
V(exponent_string, "exponent") \
106106
V(exports_string, "exports") \
107107
V(ext_key_usage_string, "ext_key_usage") \
108+
V(external_string, "external") \
108109
V(external_stream_string, "_externalStream") \
109110
V(family_string, "family") \
110111
V(fatal_exception_string, "_fatalException") \

src/node.cc

+4
Original file line numberDiff line numberDiff line change
@@ -2298,11 +2298,15 @@ void MemoryUsage(const FunctionCallbackInfo<Value>& args) {
22982298
Number::New(env->isolate(), v8_heap_stats.total_heap_size());
22992299
Local<Number> heap_used =
23002300
Number::New(env->isolate(), v8_heap_stats.used_heap_size());
2301+
Local<Number> external_mem =
2302+
Number::New(env->isolate(),
2303+
env->isolate()->AdjustAmountOfExternalAllocatedMemory(0));
23012304

23022305
Local<Object> info = Object::New(env->isolate());
23032306
info->Set(env->rss_string(), Number::New(env->isolate(), rss));
23042307
info->Set(env->heap_total_string(), heap_total);
23052308
info->Set(env->heap_used_string(), heap_used);
2309+
info->Set(env->external_string(), external_mem);
23062310

23072311
args.GetReturnValue().Set(info);
23082312
}

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)