Skip to content

Commit 2912da4

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 12ede48 commit 2912da4

File tree

4 files changed

+21
-3
lines changed

4 files changed

+21
-3
lines changed

doc/api/process.md

+15-3
Original file line numberDiff line numberDiff line change
@@ -764,8 +764,16 @@ As with `require.main`, it will be `undefined` if there was no entry script.
764764
added: v0.1.16
765765
-->
766766

767-
Returns an object describing the memory usage of the Node.js process
768-
measured in bytes.
767+
* Returns: {Object}
768+
* `rss` {Integer}
769+
* `heapTotal` {Integer}
770+
* `heapUsed` {Integer}
771+
* `external` {Integer}
772+
773+
The `process.memoryUsage()` method returns an object describing the memory usage
774+
of the Node.js process measured in bytes.
775+
776+
For example, the code:
769777

770778
```js
771779
console.log(process.memoryUsage());
@@ -776,10 +784,14 @@ This will generate:
776784
```js
777785
{ rss: 4935680,
778786
heapTotal: 1826816,
779-
heapUsed: 650472 }
787+
heapUsed: 650472,
788+
external: 49879
789+
}
780790
```
781791

782792
`heapTotal` and `heapUsed` refer to V8's memory usage.
793+
`external` refers to the memory usage of C++ objects bound to JavaScript
794+
objects managed by V8.
783795

784796

785797
## process.nextTick(callback[, arg][, ...])

src/env.h

+1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ namespace node {
9090
V(exponent_string, "exponent") \
9191
V(exports_string, "exports") \
9292
V(ext_key_usage_string, "ext_key_usage") \
93+
V(external_string, "external") \
9394
V(external_stream_string, "_externalStream") \
9495
V(family_string, "family") \
9596
V(fatal_exception_string, "_fatalException") \

src/node.cc

+4
Original file line numberDiff line numberDiff line change
@@ -2145,11 +2145,15 @@ void MemoryUsage(const FunctionCallbackInfo<Value>& args) {
21452145
Number::New(env->isolate(), v8_heap_stats.total_heap_size());
21462146
Local<Number> heap_used =
21472147
Number::New(env->isolate(), v8_heap_stats.used_heap_size());
2148+
Local<Number> external_mem =
2149+
Number::New(env->isolate(),
2150+
env->isolate()->AdjustAmountOfExternalAllocatedMemory(0));
21482151

21492152
Local<Object> info = Object::New(env->isolate());
21502153
info->Set(env->rss_string(), Number::New(env->isolate(), rss));
21512154
info->Set(env->heap_total_string(), heap_total);
21522155
info->Set(env->heap_used_string(), heap_used);
2156+
info->Set(env->external_string(), external_mem);
21532157

21542158
args.GetReturnValue().Set(info);
21552159
}

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)