[Hello-Java.Base] MonoVM + peer collection #1319
Merged
+9
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context: a5b229d
Now that MonoVM can be used on the desktop (a5b229d), let's show it in action!
Update
samples/Hello-Java.Baseto callGC.Collect()andGC.WaitForPendingFinalizers()to help cause theMyJLOinstance to be collected before app exit.Which is fine, but what we also need are GREF logs. Unfortunately, we can't use
JreRuntimeOptions.JniGlobalReferenceWriterfor that purpose, becauselibjava-interop.dylibis native code and we want both managed and native code to write GREF logs to the same place.Instead, set the
JAVA_INTEROP_GREF_LOGenvironment variable to a file path:Then read
g.txt. Selected output includes:Which shows the creation of JNI handle 0x7fbfb57274c0/G, which is associated with
Hello.MyJLO, and then we go through the GC process:+w+ …)-g- …)*try_take_global …)-w- …)Hello.MyJLOinstance (Finalizing PeerReference=0x0/G …)The
Instance=value can be used to correlate instances; it's the value ofRuntimeHelpers.GetHashCode().