Android 工作室在任何时候都使用 > 100% 的 CPU ——似乎没有后台进程在运行

我注意到 Android Studio (运行时)在任何时候都使用超过100% 的 CPU,即使当 IDE 看起来没有运行后台进程(索引等)时也是如此。我可能会怀疑这是我的盒子特有的东西,但是一些开发人员同事也遇到了这种情况。

通常情况下,CPU 使用量在100左右或200左右(见下面的截图)。有人也遇到过这种情况吗?如果是这样,IDE 中是否有任何策略或选项来纠正这种对系统资源的大量使用?

enter image description here

enter image description here

55333 次浏览

You can try the following options in the File Menu:

  1. File Menu -> Invalidate Caches / Restart... -> Invalidate and Restart
  2. Enable Power Save Mode by clicking on File -> Power Save Mode

Power Save mode only disable code insights and background tasks.

You might consider going to File > Invalidate Caches / Restart Your cache might be kicking off something funky in the background

enter image description here

I encountered a constant high cpu usage with no apparent reason. Invalidating cache did not work nor did the power save mode.

In my case there was a something wrong in the '.git' directory which was causing android studio to fail in an endless loop. Checking out the repo again fixed the problem.

My advice is to check the android studio logs for any hints to what is causing it to falter. You could also start it from terminal and check the Stdout/Stderr output.

I switched on power save in Android Studio 1.0 it helped but this meant I opted out on so many features that Android Studio has to offer. Thus I sought to find a better solution, I happened to always have a dialog box pop up and ask me to increase my VM size. Apparently once I increased this, I am able to switch off power save and have my Android Studio work perfectly.

This is how to do so: On Mac OS go to /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions (To open contents right click on Android Studio app > View contents) You will find the following variables

-Xms128m
-Xmx4096m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=200m
-XX:+UseCompressedOops

On Windows go to Environment Variables and find a System Variable called _JAVA_OPTIONS

Increase these figures accordingly.

  • Xmx specifies the maximum memory allocation pool for a Java Virtual Machine (JVM).
  • Xms specifies the initial memory allocation pool.

i.e Your JVM will be started with Xms amount of memory and will be able to use a maximum of Xmx amount of memory.

I had exact same problem on Linux. Solved by increasing the memory size.

Started by looking at the top -p <android studio pid> -H which shows which threads are using most of CPU, to me there are three threads: 94232,94233,94234. Then I do a jstack <pid> to get the stack dump of android studio, and look for 0x17018 (=94232), it turns out to be "Gang worker#0 (Parallel CMD Threads)". All three of them. apparently JVM is too busy doing GC all the time.

Also opened jconsole against my android studio process and it shows GC time "20 minutes"!!! (at the bottom of memory tab)

Fix is to change the studio.vmoptions (or studio64.vmoptions in my case), to increase the -Xmx value from default 750m to 1500m. It is sufficient for me. if you have too much memory, set to 2g or 4g or 16g..

I tried the following procedure and Android Studio on my Surface Pro 3 sped up by an insane amount:

  1. Reduce the amount and memory of the Android Virtual Devices you have.
  2. Invalidate Caches/Restart
  3. Go to Power Save Mode
  4. Close all unnecessary files that are opened.
  5. Reduce your VM Heap Size to around 256.

Interestingly, for me this seemed to be something to do with the version control integration.

I fixed this by re-loading my android studio project and when it asked about wiring up my CVS links (I don't recall the exact wording), I just said "Ignore". After that it ran smoothly without pulling CPU

On Windows I reduced the studio64.exe process priority and set the process' affinity to half of the cores. Open Task Manager, click on Processes tab, right click on process studio64.exe and you'll see it in the menu.

Thanks to Buzzrick (answered on this page, probably above my answer), he mentioned about VCS. Turning off all of the background operations of VCS seemed to have a HUGE impact toward the high cpu usage - it was 150% and now it's 20%, more or less.

I'm on OS X

Go to: Preferences > Version Control > Background. Now listed under 'Background Operations' are 6 options. I disabled the first three options which are:

Perform update on VCS in background, Perform commit to VCS in background, Perform checkout to VCS in background.

In my case I have white-listed Android-Studio's folder in "Eset Smart Security" and the problem solved!

hope this helps!

Edit:

Disabling HIPS in Eset settings was also helpful in my situation!

You can check which part of Android Studio or which plugin is using a lot of CPU, with Android Studio -> Help -> Diagnostic Tools -> Activity Monitor

On Android Studio 2.3, this used to happen when the "Android Monitor" window was open (the window shows Logcat messages from devices and emulators), and then you press Ctrl+F (Cmd+F on the Mac) to reveal the 'Find' search bar inside this window.

It can also happen when you connect a Samsung phone to your computer via USB, which has Developer Mode enabled, because Samsung phones usually send out large amounts of debug text to Logcat every second, even if the Logcat window is closed.

So the solutions to prevent the 100% CPU usage are either:

  • Turn off the Find search bar, or hide the window completely. Or ...
  • Disconnect a Samsung phone which is sending out lots of debug messages. Or ...
  • Upgrade to Android Studio 3, where this bug doesn't happen. Or ...
  • If all else fails, just restart Android Studio

I've left this question open for awhile as coworkers and posters here have found value in various solutions over time. For myself, simply updating Android Studio solved the issue (after a number of months where none of the solutions herein worked for me).