Updating one class causes a 2+ minute build

Hello all,

We’ve recently switched from ant to gradle and being a newcomer to gradle I’m having some issues trying to troubleshoot our long compile times. Even if I simply change one line of one class, it takes over 2 minutes to run the compileJava task. Whenever I use the --debug flag, I see the daemon setting up configuration, figuring out dependencies, etc, then once the actual compilation part begins, it’s essentially two minutes of this:

10:11:41.254 [LIFECYCLE] [org.gradle.process.internal.health.memory.MemoryManager] 
10:11:41.254 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 17018789888, Free: 4845330432}
10:11:41.254 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 17018789888, Free: 4845330432}
10:11:41.254 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 3817865216, Committed: 2157969408}
10:11:41.346 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
10:11:41.347 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
10:11:41.347 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
10:11:41.347 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
10:11:41.348 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
10:11:41.348 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
10:11:41.348 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
10:11:46.255 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 17018789888, Free: 4763582464}
10:11:46.255 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 17018789888, Free: 4763582464}
10:11:46.255 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 3817865216, Committed: 2267545600}
10:11:51.256 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 17018789888, Free: 4742369280}
10:11:51.256 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 17018789888, Free: 4742369280}
10:11:51.256 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 3817865216, Committed: 2267545600}
10:11:51.347 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
10:11:51.348 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
10:11:51.348 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
10:11:51.348 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
10:11:51.349 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
10:11:51.349 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
10:11:51.349 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.

I’m wondering if any gradle gurus can help me figure out if this is just normal run of the mill compilation output and my project is just super large, or if I’m having actual memory problems here. If this is normal, then why isn’t it just compiling the one class I changed instead of all of them?

Thanks for your time!

I don’t qualify as a Gradle guru. But I have recently seen similar output from Gradle when I was troubleshooting an issue of mine.

In my particular situation Gradle would hang forever. Doing nothing except writing out the same [DEBUG] messages you’re seeing.

Questions for you:

  1. What is the one class coded to do? Does it spawn any OS processes?
  2. How many daemons does gradle --status list?
  3. How many java processes do you see in System Monitor/top/Task Manager or whatever, during the two minutes of compiling?

Thanks for the reply!

  1. The class is is just a simple web client that uses the javax.ws.rs.client package to call another service.

  2. My output of gradle --status is this:

    PID STATUS INFO
    46924 IDLE 5.3.1

  3. I only see one java process in Task Manager

One thing I noticed while observing the task manager was that my CPU and Memory were nearly maxed out during the duration of the compile (around 95-98%).