scalasbthprof

running hprof from sbt


How do I run hprof from sbt?

Are there different options to profile the CPU vs. the heap?


Solution

  • I assume you don't want to profile sbt itself so you'd have to use the fork mechanism and combine with the hprof options:

    override def fork = forkRun("-agentlib:hprof=heap=sites" :: Nil)
    

    or

    override def fork = Some(new ForkScalaRun { 
      override def runJVMOptions = super.runJVMOptions ++
        Seq("-Xmx1999m", "-agentlib:hprof=heap=sites") 
      override def scalaJars = Seq(buildLibraryJar.asFile, buildCompilerJar.asFile)
    })
    

    Here are some sample options (use -agentlib:hprof=help for more help):

    Option Name and Value  Description                    Default
    ---------------------  -----------                    -------
    heap=dump|sites|all    heap profiling                 all
    cpu=samples|times|old  CPU usage                      off