It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Is there any way to get the tag to use less heap?

Robert Mandeville Jan 27, 2014

I am running a <clover-merge> Ant tag within a 1.7.0_04 JVM with 8 GB of heap. We were running 1.7.0_02 a week ago, but don't know if this is relevant. We are running out of heap, and have found that we can resolve this by increasing the JVM to 10 GB of heap. Given the number of builds we run, we can't afford to give them all 10 GB heap.

Is there a way to tune the <clover-merge> tag so that it uses less heap, perhaps by doing some work on disk rather than in core?

1 answer

0 votes
Marek Parfianowicz Atlassian Team Dec 22, 2014

Hi Robert,

The majority of memory consumption in <clover-merge> is related with merging per-test coverage files. So, as a first step I would suggest to check if it's possible to reduce number of "clover.db*.s" files produced in your build.

Ways to achieve this:

  • check if you need per-test code coverage in your projects at all - while this feature is very useful and I really recommend using it, there may be a case that you actually need a high-level coverage overview report, in which per-test coverage is irrelevant (a PDF or an XML report, for instance)
  • check if you don't have outdated coverage recording files from previous builds in your build workspace as Clover will have to unnecessarily process them (in general, Clover database and recordings don't have to be kept after a build)
  • check if it's possible to reduce number of <javac> and <groovyc> calls in your project - every such call causes that classes instrumented by Clover will produce a separate set of coverage recording files

 

As a next step I would suggest to experiment with various garbage collectors and GC settings for <clover-merge>. In general, when Clover merges per-test recordings, it creates a vast amount of short-living long[] arrays. Standard GC settings are usually not the most optimal - in various tests with a profiler I've seen unnecessary growth of a heap size, because GC was not able to free memory fast enough. Increasing size of a young generation as well as running full garbage collection more aggressively may help.

 

Cheers
Marek

Suggest an answer

Log in or Sign up to answer
This widget could not be displayed.
This widget could not be displayed.
Community showcase
Published in Opsgenie

Handling Opsgenie Alerts

Hi everyone, welcome to the kb articles for Opsgenie FAQs. I'm one of the Technical Support Engineers for Opsgenie who will be providing weekly posts on FAQs from customers.   All alerts are ...

28 views 0 1
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you