You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by GitBox <gi...@apache.org> on 2021/06/30 11:16:54 UTC
[GitHub] [daffodil] stevedlawrence commented on pull request #600: Remove by-name and transient params for runtime data objects
stevedlawrence commented on pull request #600:
URL: https://github.com/apache/daffodil/pull/600#issuecomment-871314429
This is my process for things like this in JProfiler. Other profilers might be different but the process is probably similar.
What I first to is add an object with some functions that I can insert to act as my trigger point. For example:
```scala
object Trigger() {
def start(): Unit = println("Start trigger")
def stop(): Unit = println("Start trigger")
}
```
Then right after a DataProcessor is created and where all compile time references should no longer be accessable, I would add a call to this function, e.g.
```scala
Trigger.start()
```
Then I would run this in a JProfiler configured with a "Method Invocation" Trigger on the `Trigger.start()`. The Action for the trigger would be "trigger heap dump", so we get a heap dump when this Trigger.start method is called. In JProfiler, this action can be configured to perform a full garbage collection. When that checked, in theory compile time objects should have all been garbage collected and won't appear in the heap dump. If they do, you should be able to examine the heap dump and find where those references still exist.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@daffodil.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org