Comments (3)
If the object is passed to the callback by reference or pointer, then it's owned by the native library and it's lifetime won't depend on what you do Java side. If you retain a reference and the native library frees the object after the callback you will get a segmentation fault when you try to access the object from Java..
If it's passed by value, the JVM has its own copy of the object and it will live as long the as Java object lives.
If it's a unique_ptr or shared_ptr passed by value, then you may trigger a native deallocation when the Java object is GCed.
from javacpp.
If it's a unique_ptr or shared_ptr passed by value, then you may trigger a native deallocation when the Java object is GCed.
Great! Thanks a lot!
Edit: I actually just thought of another thing right after I closed it. If the native object hold a reference to a java object does the GC know not to collect it?
from javacpp.
Edit: I actually just thought of another thing right after I closed it. If the native object hold a reference to a java object does the GC know not to collect it?
The GC knows nothing about what native code may have done. When a Pointer
is collected, the native object is deallocated or not depending if it's the JVM than owns (instantiated) the object or not.
In the special case of shared_ptr, then the deallocation can free the memory of the underlying object or not depending on the reference count that the native library may have incremented or decremented its side.
from javacpp.
Related Issues (20)
- Parser mapping HOT 12
- 'jni.h' file not found HOT 6
- windows Cannot run program "cl" HOT 1
- std::unique_ptr fields HOT 4
- Optional pair HOT 2
- ParserException for valid c++ code HOT 1
- Function pointer returning shared_ptr HOT 10
- LNK2001: Unresolved external, issue with namespace? HOT 7
- infinite recursion when calling virtualized inherited function HOT 4
- Mapping Template Constraints, Parser Error HOT 5
- Parser cannot compile because of QT HOT 4
- Template class with template functions HOT 15
- Inadequate Error Handling HOT 1
- `@StdVector` default annotation causing `Parser` to ignore templated constructors and operator overloads with `std::vector` arguments HOT 10
- Crash when passing a unique_ptr by value HOT 12
- Potential class loading deadlock when call static methods of Loader or Pointer HOT 13
- Multiple pointer types and automatic generation of function overloads HOT 1
- Parser doesn't add @Virtual annotations HOT 2
- Pointer types don't work on the native side if allocated in java HOT 16
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from javacpp.