Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
12d0fe0
doc: guide - using valgrind to debug memory leaks
mhdawson Jan 24, 2020
3ef3a0c
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
7728bfc
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
73c5e92
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
590dc3f
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
d088370
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
50c9880
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
2962a90
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
563f2ca
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
18dd67f
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
21b117a
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
fa59a67
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
096ae18
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
449ce6f
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
bcb0cc4
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
6f61906
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
9095593
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
e5db9f0
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
769125c
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
92115db
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
fc4094b
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
629191b
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
da9e9ae
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
12fb16d
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
073339d
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
b31e10c
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
2a79264
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
47f5179
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
dbd1307
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
b40ff7e
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
f0d2b43
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
fa454fc
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
769a9b3
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
1e243d6
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
599f71b
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
73842f0
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
74f9fe2
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
1934ca0
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
a2d4c2c
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
2001796
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
2f61dfc
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
627691c
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
0a5c751
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
323947c
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
0a29d6b
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
e87c6a9
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
819ca81
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
52eff0e
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
18f4ac1
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
7172ef5
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
c5e0150
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
7fd1928
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
e961ea1
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
e7392f5
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
fa2c7a3
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
1370c46
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
d925433
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
a39456f
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
8d90139
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
ff189a2
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
1b73672
squash: address comments
mhdawson Jan 27, 2020
1983346
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 27, 2020
09d1ea6
squash: address comments
mhdawson Jan 27, 2020
3252c83
squash: fix linter issues introduced by comments
mhdawson Jan 27, 2020
e7ad36a
squash: address comments
mhdawson Jan 30, 2020
aeb5b93
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 31, 2020
70b9c40
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 31, 2020
eafd428
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 31, 2020
089d906
Update doc/guides/investigating_native_memory_leak.md
mhdawson Jan 31, 2020
b546680
squash: address comments
mhdawson Jan 31, 2020
70e831c
squash: fix linting issues introduced by suggestions
mhdawson Jan 31, 2020
7f8ddeb
Update doc/guides/investigating_native_memory_leak.md
mhdawson Feb 12, 2020
d1773b2
Update doc/guides/investigating_native_memory_leak.md
mhdawson Feb 14, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
squash: address comments
  • Loading branch information
mhdawson authored Jan 31, 2020
commit b5466807da664c162c2361f0cd05fa7fe6f06f05
22 changes: 15 additions & 7 deletions doc/guides/investigating_native_memory_leak.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,12 @@ user1@minikube1:~/valgrind/node-addon-examples/1_hello_world/napi$ valgrind node

This reports that Node.js is not _completely_ clean as there is some memory
that was allocated but not freed when the process shut down. It is often
impractical/not worth being completely clean in this respect and Node.js
does a pretty good job only leaving on the order of 6KB that are
not freed on shutdown.
impractical/not worth being completely clean in this respect. Modern
operating systems will clean up the memory of the process after the
shutdown while attemping to fre all memory to get a clean
Comment thread
mhdawson marked this conversation as resolved.
Outdated
report may have a negative impact on the code complexity and
shutdown times. Node.js does a pretty good job only leaving on
the order of 6KB that are not freed on shutdown.

## An obvious memory leak

Expand Down Expand Up @@ -119,10 +122,15 @@ napi_value Method(napi_env env, napi_callback_info info) {

When trying to create a memory leak you need to ensure that
the compiler has not optimized out the code that creates
the leak. For example, assigning the result of `malloc()` to either a
global variable or a variable that is read the compiler will optimize
out the loop with the malloc and valgrind does not report
a problem (since it no longer exists in the code being run).
the leak. For example, by assigning the result of the allocation
to either a global variable or a variable that will be read
afterwards the compiler will not optimize it out along with
the malloc and Valgrind will properly report the memory leak.
If `malloc_holder` in the example above is made into a
local variable then the compiler may freely remove
it along with the allocations (since it is not used)
and Valgrind will not find any leaks since they
will no longer exist in the code being run.

Running valgrind on this code shows the following:

Expand Down