| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent e5d1e27 commit b7088a9
5 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,16 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + | ||
| 3 | + var common = require('../common.js'); | ||
| 4 | + var bench = common.createBenchmark(main, { | ||
| 5 | + n: [1e5] | ||
| 6 | + }); | ||
| 7 | + | ||
| 8 | + function main(conf) { | ||
| 9 | + var n = +conf.n; | ||
| 10 | + | ||
| 11 | + bench.start(); | ||
| 12 | + for (var i = 0; i < n; i++) { | ||
| 13 | + process.memoryUsage(); | ||
| 14 | + } | ||
| 15 | + bench.end(n); | ||
| 16 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -48,6 +48,7 @@ | |||
| 48 | 48 | ||
| 49 | 49 | _process.setup_hrtime(); | |
| 50 | 50 | _process.setup_cpuUsage(); | |
| 51 | + _process.setupMemoryUsage(); | ||
| 51 | 52 | _process.setupConfig(NativeModule._source); | |
| 52 | 53 | NativeModule.require('internal/process/warning').setup(); | |
| 53 | 54 | NativeModule.require('internal/process/next_tick').setup(); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,6 +11,7 @@ function lazyConstants() { | |||
| 11 | 11 | ||
| 12 | 12 | exports.setup_cpuUsage = setup_cpuUsage; | |
| 13 | 13 | exports.setup_hrtime = setup_hrtime; | |
| 14 | + exports.setupMemoryUsage = setupMemoryUsage; | ||
| 14 | 15 | exports.setupConfig = setupConfig; | |
| 15 | 16 | exports.setupKillAndExit = setupKillAndExit; | |
| 16 | 17 | exports.setupSignalHandlers = setupSignalHandlers; | |
@@ -100,6 +101,20 @@ function setup_hrtime() { | |||
| 100 | 101 | }; | |
| 101 | 102 | } | |
| 102 | 103 | ||
| 104 | + function setupMemoryUsage() { | ||
| 105 | + const memoryUsage_ = process.memoryUsage; | ||
| 106 | + const memValues = new Float64Array(4); | ||
| 107 | + | ||
| 108 | + process.memoryUsage = function memoryUsage() { | ||
| 109 | + memoryUsage_(memValues); | ||
| 110 | + return { | ||
| 111 | + rss: memValues[0], | ||
| 112 | + heapTotal: memValues[1], | ||
| 113 | + heapUsed: memValues[2], | ||
| 114 | + external: memValues[3] | ||
| 115 | + }; | ||
| 116 | + }; | ||
| 117 | + } | ||
| 103 | 118 | ||
| 104 | 119 | function setupConfig(_source) { | |
| 105 | 120 | // NativeModule._source | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -105,7 +105,6 @@ namespace node { | |||
| 105 | 105 | V(exponent_string, "exponent") \ | |
| 106 | 106 | V(exports_string, "exports") \ | |
| 107 | 107 | V(ext_key_usage_string, "ext_key_usage") \ | |
| 108 | - V(external_string, "external") \ | ||
| 109 | 108 | V(external_stream_string, "_externalStream") \ | |
| 110 | 109 | V(family_string, "family") \ | |
| 111 | 110 | V(fatal_exception_string, "_fatalException") \ | |
@@ -115,8 +114,6 @@ namespace node { | |||
| 115 | 114 | V(flags_string, "flags") \ | |
| 116 | 115 | V(gid_string, "gid") \ | |
| 117 | 116 | V(handle_string, "handle") \ | |
| 118 | - V(heap_total_string, "heapTotal") \ | ||
| 119 | - V(heap_used_string, "heapUsed") \ | ||
| 120 | 117 | V(homedir_string, "homedir") \ | |
| 121 | 118 | V(hostmaster_string, "hostmaster") \ | |
| 122 | 119 | V(ignore_string, "ignore") \ | |
@@ -184,7 +181,6 @@ namespace node { | |||
| 184 | 181 | V(rename_string, "rename") \ | |
| 185 | 182 | V(replacement_string, "replacement") \ | |
| 186 | 183 | V(retry_string, "retry") \ | |
| 187 | - V(rss_string, "rss") \ | ||
| 188 | 184 | V(serial_string, "serial") \ | |
| 189 | 185 | V(scopeid_string, "scopeid") \ | |
| 190 | 186 | V(sent_shutdown_string, "sentShutdown") \ | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2290,25 +2290,22 @@ void MemoryUsage(const FunctionCallbackInfo<Value>& args) { | |||
| 2290 | 2290 | return env->ThrowUVException(err, "uv_resident_set_memory"); | |
| 2291 | 2291 | } | |
| 2292 | 2292 | ||
| 2293 | + Isolate* isolate = env->isolate(); | ||
| 2293 | 2294 | // V8 memory usage | |
| 2294 | 2295 | HeapStatistics v8_heap_stats; | |
| 2295 | - env->isolate()->GetHeapStatistics(&v8_heap_stats); | ||
| 2296 | - | ||
| 2297 | - Local<Number> heap_total = | ||
| 2298 | - Number::New(env->isolate(), v8_heap_stats.total_heap_size()); | ||
| 2299 | - Local<Number> heap_used = | ||
| 2300 | - 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)); | ||
| 2304 | - | ||
| 2305 | - Local<Object> info = Object::New(env->isolate()); | ||
| 2306 | - info->Set(env->rss_string(), Number::New(env->isolate(), rss)); | ||
| 2307 | - info->Set(env->heap_total_string(), heap_total); | ||
| 2308 | - info->Set(env->heap_used_string(), heap_used); | ||
| 2309 | - info->Set(env->external_string(), external_mem); | ||
| 2310 | - | ||
| 2311 | - args.GetReturnValue().Set(info); | ||
| 2296 | + isolate->GetHeapStatistics(&v8_heap_stats); | ||
| 2297 | + | ||
| 2298 | + // Get the double array pointer from the Float64Array argument. | ||
| 2299 | + CHECK(args[0]->IsFloat64Array()); | ||
| 2300 | + Local<Float64Array> array = args[0].As<Float64Array>(); | ||
| 2301 | + CHECK_EQ(array->Length(), 4); | ||
| 2302 | + Local<ArrayBuffer> ab = array->Buffer(); | ||
| 2303 | + double* fields = static_cast<double*>(ab->GetContents().Data()); | ||
| 2304 | + | ||
| 2305 | + fields[0] = rss; | ||
| 2306 | + fields[1] = v8_heap_stats.total_heap_size(); | ||
| 2307 | + fields[2] = v8_heap_stats.used_heap_size(); | ||
| 2308 | + fields[3] = isolate->AdjustAmountOfExternalAllocatedMemory(0); | ||
| 2312 | 2309 | } | |
| 2313 | 2310 | ||
| 2314 | 2311 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments