Skip to content
Closed
Changes from 1 commit
Commits
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
Next Next commit
doc: modified docs to instruct how to invoke gc on Wrapping C++ objects
Currently the documentation for Wrapping C++ Objects doesn't explain
how to destruct an object by explicitly invoking the garbage collector.
This commit includes a modification to docs that explains how to force
the garbage collector to clear objects using V8's command line flags.

Fixes: #19876
  • Loading branch information
isurusiri committed Apr 30, 2018
commit 150e8c4caa3873c9c9edece0010cd30796ca6a82
7 changes: 7 additions & 0 deletions doc/api/addons.md
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,13 @@ console.log(obj.plusOne());
// Prints: 13
```

When it comes to destructing wrapper objects, garbage collector can execute
forcefully using V8 command line flags ` --gc_global ` and ` gc_interval `,
where ` --gc_global ` forces V8 to perform a full garbage collection and
` gc_interval ` forces V8 to perform garbage collection after a given amount
of allocations. Although, it is recommended to limit V8 command line flags
for testing purposes only, since these are primarily debug flags.

Copy link
Copy Markdown
Member

@Trott Trott May 2, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about this?:

The destructor for a wrapper object will run when the object is
garbage-collected. For destructor testing, there are command-line flags that can
be used to make it possible to force garbage collection. These flags are
provided by the underlying V8 JavaScript engine. They are subject to change or
removal at any time. They are not documented by Node.js or V8, and they should
never be used outside of testing.

Or if that's too mysterious, maybe this?:

The destructor for a wrapper object will run when the object is
garbage-collected.

Leave it as an exercise for the reader to figure out how to force garbage collection for testing purposes. People can find that in blog posts and StackOverflow etc. (For example, https://stackoverflow.com/q/27321997/436641.) But we don't have to document it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with leaving reader to figure it out since we are not recommending to use command line flags outside of testing. First options is informative and I'll proceed with that.

### Factory of wrapped objects

Alternatively, it is possible to use a factory pattern to avoid explicitly
Expand Down