Reputation: 7932
How can you make the experience with Eclipse faster?
For instance: I disable all the plugins I don't need (Mylyn, Subclipse, …).
Instead of using a plugin for Mercurial, I configure TortoiseHG as an external tool.
Upvotes: 1295
Views: 681364
Reputation: 1323045
The three most influential factors for Eclipse speed are:
The "same" workspace in Indigo (3.7.2) SR2 loads in 4 seconds, in Kepler SR2 (4.3.2) in 7 seconds and in Luna (4.4.0) in 10 seconds. All are Java EE bundles. Newer versions have more bundled plugins, but still the trend is obvious. (by "same" workspace I mean: same (additionally installed) plugins used, same projects checked out from version control).
Launching it with the latest JDK (Java 14 at the time of writing, which does not prevent you to compile in your Eclipse project with any other JDK you want: 1.4.2, 1.5, 1.6 older...)
-vm jdk1.6.0_10\jre\bin\client\jvm.dll
2024: Monish Sen notes in the comments that, in JDK22 (Eclipse Temurin™), jvm.dll
is present in <java_home>/bin/server/
-vm <java_home>/bin/server/jvm.dll
Configuring the eclipse.ini (see this question for a complete eclipse.ini)
-Xms512m
-Xmx4096m
[...]
The Xmx
argument is the amount of memory Eclipse will get (in simple terms). With -Xmx4g
, it gets 4 GiB of RAM, etc.
Note:
Dec. 2020, Udo confirms in the comments
From version 4.8 (Photon) an up there was a steady speed gain after each version.
The main platform was optimized every release to load faster, enable more features for the dark theme and to add more features for newer Java versions of the Java development tools.
Especially with-in the last 3 versions, the startup time was increased considerably. There should be a significant increase in start-up time with the newest version of Eclipse 2020-12.In my experience it started a lot faster with each new version.
But: There are still plugins which do not follow the new way of using the Eclipse API and are therefore still slow to start.
Since the change to Java 11 as the minimum runtime version starting from Eclipse version 2020-09, at least the core system uses the newer features of the JVM. It is up to the providers of the other plugins to upgrade to newer APIs and to use the full power of modern CPUs (e.g. concurrent programming model).
2024: As noted by dan1st in the comments:
With newer Java versions, it's also possible to use CDS which can improve startup.
This can be done by adding-XX:+AutoCreateSharedArchive -XX:SharedArchiveFile=classes.jsa
(or similar) to the JVM arguments.
True: CDS, or Class Data Sharing, is a feature in the Java Virtual Machine (JVM) aimed at reducing the startup time of Java applications and the amount of memory they consume. It achieves this by allowing a set of classes to be pre-loaded and shared among multiple Java Virtual Machine (JVM) instances running on the same machine. The concept behind CDS is to create a shared archive of classes that can be mapped into memory at runtime, thereby speeding up the class loading process.
CDS was introduced in Java 5 (J2SE 5.0) in a basic form and has been gradually improved in subsequent Java releases.
The feature Dan mentions, -XX:+AutoCreateSharedArchive
, and the use of a specified shared archive file via -XX:SharedArchiveFile=
, were significantly enhanced and made more accessible in Java 10 and later versions.
Starting with Java 12, the ability to automatically create a shared archive on the first application run (with -XX:+AutoCreateSharedArchive
) simplifies the process, making it more beneficial for applications without needing manual intervention to create the shared class data archive.
In the context of speeding up Eclipse or similar Java-based applications, CDS will help with faster startup time, reduced memory footprint and improved performance.
Your eclipse.ini
file would be (with Java 19 or later):
-vmargs
-XX:+UseG1GC
-XX:+AutoCreateSharedArchive
-XX:SharedArchiveFile=<path_to_your_archive>/classes.jsa
-Xmx4096m
Replace <path_to_your_archive>
with an appropriate path where you want the shared archive to be stored. The JVM will automatically create this archive on the first run and then use it to speed up subsequent startups.
Furthermore, in case Lombok is installed in Eclipse, it is necessary to allow the use of CDS with agents by adding the diagnostic VM option -XX:+AllowArchivingWithJavaAgent
. In this case, the eclipse.ini
would contain something like:
-vmargs
-XX:+UseG1GC
-XX:+AutoCreateSharedArchive
-XX:SharedArchiveFile=<path_to_your_archive>/classes.jsa
-XX:+UnlockDiagnosticVMOptions
-XX:+AllowArchivingWithJavaAgent
-javaagent:/path/to/the/lombok.jar
-Xmx4096m
Upvotes: 463
Reputation: 1974
Do you have a huge ram? Create a ramdisk and place there your
Make sure you persist your changes back to your HDD or commit them to VCS to avoid data-loose on power-off.
Upvotes: 0
Reputation: 31
For Windows users:
If you go to Task Manager, choose the eclipse application, and click on the little arrow next to it, you will usually just see one sub-process appear below "eclipse.exe". However, in my case, if you have multiple instances of "Java Platform SE Binary", then end all of them. For some reason, I had three of these running in the background, even though I wasn't currently running any projects. Nevertheless, this will boost performance back to the way it likely was when you first installed eclipse on your computer.
If you can no longer run a project after the change, then try relaunching eclipse.
Upvotes: 0
Reputation: 3180
**Tips for making Eclipse IDE Faster**
Eclipse will run faster when working with small projects. But when you have to work with large project, you will get irritated with its speed. Even with a huge RAM you will not be happy with its speed.Below steps will help eclipse to increase its speed
Remove unwanted activation of some of the plugins at start-up by going to windows–>preference–>General–>Startup and shutdown also make sure you don’t use those plugins in any of your views
Disabling label decorations which is of less use for you, will also help you to gain some performance . Go to Windows–>Preference–>General–>Appearance–>Label -> Decorations
Close unwanted projects and use working set option to move from one group of project to another smoothly.
Configure eclipse.ini which will be available in the eclipse installed location.
Configuring eclipse.ini should be based on your RAM
-Xms256m
-Xmx512m
-XX:PermSize=512m
-XX:MaxPermSize=512M
Also have a look at http://wiki.eclipse.org/Eclipse.ini for more options to configure eclipse.ini.
Do not keep lot of tabs opened in the editor. Better to have around 20 tabs . Regularly close the unused tabs. To open resource we can always use ctrl+shift+R and ctrl+shift+T (java resource) instead of opening lot of tabs I experienced a considerable improvement in performance when limiting the number of open tabs (In the past I frequently had 30+ tabs open). You can let eclipse handle this for you automatically: Window->Preferences->Editors-> close editors automatically 8 open tabs is the amount before the >> sign appears, so I set 14 as my default value. When opening more tabs, the ones the least recently accessed will be closed. When all editors are dirty or pinned. If it has unsaved modifications you can prompt to save & reuse (tab will be closed, a new one will be opened in its place). Or you can open a new editor end thus increase the amount of open tabs (the unobtrusive choice). If you want to ensure some tabs never get closed autmatically, you can pin them. This by clicking on the pin icon (the rightmost icon in the toolbar, with “pin editor” as tooltiptext).
Go to Windows -> Preferences -> Validation and uncheck any validators you don’t want or need.
Go to Windows -> Preferences -> General -> Appearance -> and uncheck any animation you don’t want or need.
Go to Windows -> Preferences -> Maven and check 'do not automatically update dependencies'.
Upvotes: 8
Reputation: 7970
I give it a ton of memory (add a -Xmx
switch to the command that starts it) and try to avoid quitting and restarting it- I find the worst delays are on startup, so giving it lots of RAM lets me keep going longer before it crashes out.
Upvotes: 22
Reputation: 3734
Thanks for the hints. These options (mentioned above) helped me a lot:
Windows:
Increasing memory & regarding to my updated Java version in eclipse.ini:
-Dosgi.requiredJavaVersion=1.6
-Xms512m
-Xmx512m
-XX:PermSize=512m
-XX:MaxPermSize=512M
-Xverify:none
Additionally, since we are optimizing for speed, setting -Xms
to the same value as -Xmx
makes the JVM start with the maximum amount of memory it is allowed to use.
Linux / Ubuntu:
Using
update-alternatives --config java
Upvotes: 51
Reputation: 59
Add -Xverify:none
to your eclipse.ini file.
It will cut down your Eclipse startup time considerably (50% in my case if not more). This will tell the VM not to validate all the .class files it is loading.
Consider this: Never Disable Bytecode Verification in a Production System (as mentioned in the comments)
Upvotes: 273
Reputation: 3970
There could be several things that could delay the start and exit of eclipse. One of them is like familiar to what we have a lookalike in Windows. Disabling the windows animations and disabling startup activities speeds up windows to certain extent
Similar to what in eclipse we can have the same thing Windows-> General -> Preferences -> Appearance -> Turning OFF some decorative options. This would give a little boost but may not have much impact.
In my opinion, the projects in the work space you might have created should be limited to certain extent or rather creating a new work space if projects are more. For instance, when you try to run a single project on server it takes less time as compared to running several projects on the same server
Upvotes: 0
Reputation: 969
Apart from configuring eclipse.ini for memory usage. I have configured by "Start up & shutdown options". My Eclipse is blazing fast now.
Upvotes: 5
Reputation: 7636
We use GIT as CVS and gradle as build tool.
Symptom
In my case one specific project with > 20'000 files froze using hierarchical view when navigating a directory with a lot of files.
Fix
Upvotes: 2
Reputation: 752
Not to be underrated is having a fast machine. 16-32 GB of RAM, SSD and a decent processor... and who0o0om there you go.
Upvotes: 12
Reputation: 1356
There is another thing that really speeds up Eclipse on both Windows and especially Linux - putting the JVM in RAM disk.
For Windows you can use the commercial RAM disk driver from Qsoft.
For Linux use any of the methods described in numerous articles on the Internet. It is important to give additional space to the RAM disk that is 10% bigger than the size of the JVM.
Check it out. It really makes a difference.
Upvotes: 27
Reputation: 8172
I implemented a plug-in to configure which features to be loaded in runtime to improve the performance and reduce the conflict among different plug-ins.
You may have installed many features into your Eclipse, such as Android development tools, C/C++ development tools, PHP, SVN, Git and ClearCase plug-ins. Hence Eclipse is heavy and costs a lot of memory, and some of them are not often used.
So you could use my tool to create different runtime policies, such as one that has Android, Git and base Eclipse, another one contains C/C++, SVN and base Eclipse. Next time Eclipse would only load the specified features if you're using the policy that only has Android and Git.
You are welcome to try it and give me the feedback. :)
The name of that tool is Equinox Advanced Configurator.
Upvotes: 15
Reputation: 1
I had similar slowdown and this fix applies only if you are using the C/C++ variant of the Eclipse. For C/C++
you may want to disable the indexer which is famous for CPU hog. It is the equivalent of VS intellisense.
To disable CDT indexer go to Window->Preferences
, underC/C++
tab select Indexer and uncheck the Enable indexer.
Upvotes: 2
Reputation: 336
Another performance boost can be gained by disabling label decorations
(Windows -> Preferences; General -> Appearance -> Label Decorations
)
and by disabling unused capabilities on startup
(Windows -> Preferences; General -> Startup and Shutdown
).
You may also get additional performance by choosing a different garbage collection strategy depending on your JVM.
If you're fed up with restart cycles you could use JavaRebel from ZeroTurnaround. That will shorten your time spent on server/client restarts.
Upvotes: 49
Reputation: 66
On Windows 8. Open Control panel. Find Windows Defender. Go to settings Exclude all folders where is your Spring/Eclipse and workspace
Upvotes: 5
Reputation: 66
There is once more solution Delete all files from this two folders
.metadata.plugins\org.eclipse.core.resources.history .metadata.plugins\org.eclipse.jdt.core
This help for the first momment. But it still stay slow
Upvotes: 2
Reputation: 66
The problem could be java cache, or java temporary files.
Open control panel on windows, find Java panel Click Settings on General tab, Delete temprorary files, and set amount of disk space for storing temporary files od 10000MB or less. Restart eclipse. Restore all validators and you will see that speed your IDE Eclipse is ok.
Upvotes: 2
Reputation: 1
Increase your RAM to more than 8 GB and disable autobuild project. This worked for me.
Upvotes: 1
Reputation: 3564
A few steps I follow, if Eclipse is working slow:
Open current working project and close the remaining project. If there is any any dependency among them, just open while running. If all are Maven projects, then with miner local change in pom files, you can make them individual projects also. If you are working on independent projects, then always work on any one project in a workspace. Don't keep multiple projects in single workspace.
Change the type filters. It facilitates to specify particular packages to refer always.
As per my experience, don't change memory JVM parameters. It causes a lot of unknown issues except when you have sound knowledge of JVM parameters.
Un-check auto build always. Particulary, Maven project's auto build is useless.
Close all the files opened, just open current working files.
Use Go Into Work sets. Instead of complete workbench.
Most of the components of your application you can implement and test in standalone also. Learn how to run in standalone without need of server deploy, this makes your work simple and fast. -- Recently, I worked on hibernate entities for my project, two days, I did on server. i.e. I changed in entities and again build and deployed on the server, it killing it all my time. So, then I created a simple JPA standalone application, and I completed my work very fast.
Upvotes: 3
Reputation: 558
I have tried many permutations by increasing heapspace and changing the garbage collector settings to speed up Eclipse.
But for my local development, in my humble opinion, I have seen that disabling the JVM garbage collector works best for me.
Mylyn autocomplete feature works with no issue and the (Not Responding) part has been significantly minimzed.
Below is a snapshot of my eclipse.ini file.
-vm
--C:\JAVA\jre\bin\server\jvm.dll
C:\JAVA8x64\jre\bin\server\jvm.dll
-vmargs
-Xnoclassgc
-Dosgi.requiredJavaVersion=1.6
-Xms256m
-Xmx1024m
I have tried using JDK 6 and JDK 8, and in both cases, noticed a significant speedup.
Upvotes: 2
Reputation: 464
If you're not bound to Eclipse for reasons like work, some plug-in\functionality you need that's only available through Eclipse and so forth; then one a possible strategy is to get rid of Eclipse altogether. This will speed up things tremendously.
You could switch to any other IDE or development environment that does what you need. One example would be NetBeans. Some proposed speed-ups also apply to NetBeans, or any other IDE for that matter.
One example that applies directly to Linux, is to move as much as possible to a tmpfs
mount. For Java development in NetBeans, I've moved the Java documentation and source to a tmpfs
mount which resulted in an enormous performance boost.
Likewise, during C++ development I'll make sure the whole source tree is in my tmpfs
mount if possible. Although I haven't extensively benchmarked build performance, a few tests on a reasonably sized codebase (few hundred source files + headers) resulted in a >50% decrease in compilation time.
Do keep in mind that your data will not persist during a power loss when using this method. To combat this, one could create a script that rsync
s the tmpfs
mount to some backup-directory and add that script as a cronjob that runs every minute.
Upvotes: 1
Reputation: 590
I experienced a considerable improvement in performance when limiting the number of open tabs (in the past I frequently had 30+ tabs open). You can let Eclipse handle this for you automatically:
Window -> Preferences -> Editors -> close editors automatically
8 open tabs is the amount before the >> sign appears, so I tend to leave it at 8.
When opening more tabs, the ones the least recently accessed will be closed.
->When all editors are dirty or pinned
If it has unsaved modifications you can prompt to save & reuse (tab will be closed, a new one will be opened in its place). Or you can open a new editor end thus increase the amount of open tabs (the unobtrusive choice).
If you want to ensure some tabs never get closed autmatically, you can pin them. This by clicking on the pin icon (the rightmost icon in the toolbar, with "pin editor" as tooltiptext).
Upvotes: 14
Reputation: 1
In special cases, bad performance can be due to corrupt h2 or nwire databases. Read Five tips for speeding up Eclipse PDT and nWire for more information.
Where I work, we are dependent on a VM to run Debian. I have installed another Eclipse version on the VM for testing purpouses, but this sometimes creates conflicts if I have the other Eclipse version running. There is a shared folder which both of the Eclipse versions shares. I accidentally left the Debian Eclipse installation running in the background once and that gave me corrupt database files.
Upvotes: 5
Reputation: 1
Make an effort to configure your build path. Code completion uses a lot of memory if it has to go through your whole project folder.
Upvotes: 13
Reputation: 415
If you use Maven and ivy do check out their consoles in case they are hogging processing during builds. I use ivy and on top of that I have certain JAR files (internal) changing with same version, so it has to workout all the time to fetch them.
If you have defined you project on a network drive then you will also experience lag during build/read/write type of processes.
Disable/uninstall plugins you don't need.
Close perpective that you don't need
Close unused database connections
Upvotes: 5
Reputation: 41
Well, if you are developing a GWT application using Eclipse, then this is the way:
Out of memory error in Eclipse
Also remember to add the same VM arguments to the hosted mode configuration.
Upvotes: 5
Reputation: 229058
While not directly related to Eclipse:
If you're running Windows 7 (and presumably Windows Vista), be sure to disable the file indexing of your workspace folder if your stuff is is in the default place - your home folder. Windows by default indexes everything in you home folder, and it's normally just a waste for your workspace. (Right click the workspace folder in explorer , Properties -> Advanced.)
Upvotes: 40
Reputation: 2642
Best practices in this thread are implemented in the free Optimizer For Eclipse, from ZeroTurnaround.
What does it help with?
For more details, check out this article from RebelLabs.
Upvotes: 13
Reputation: 7294
Try this too, it will improve the performance:
cleaning up indexes - {workspace path}.metadata.plugins\org.eclipse.jdt.core cleaning up history - {workspace path}.metadata.plugins\org.eclipse.core.resources.history
Cleaning the above folders will not impact the project files.
Upvotes: 6