Mempercepat IntelliJ-Idea

92

Saya menggunakan intelliJ untuk pengembangan Scala dan mendapat 8 GB RAM baru minggu lalu, jadi saya berpikir: saatnya menggunakannya. Saya memeriksa task manager saya dan menemukan intelliJ menggunakan ~ 250mb . Dari gerhana saya tahu bahwa mengubah opsi JVM sangat membantu dalam meningkatkan kecepatan, jadi saya mencari di Google ...

dan menemukan yang ini untuk OS X Saya tidak dapat langsung menemukan opsi JVM, jadi saya mulai mengubah Xmx. Pada 1 GB, saya menyadari itu tidak dapat dimulai lagi. Saya memeriksa versi Java intelliJ, ternyata sudah usang dan 32bit.

Jadi untuk menggunakan JDK dan 64 bit Anda saat ini, Anda harus mengubah tautan Anda menjadi dari:

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

untuk

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

dan sesuaikan "Mulai"

Kelelawar mencari JDK_HOMEdan menggunakan 64bit sekarang.

Opsi VM saya saat ini , yang terletak di

...\IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe.vmoptions

adalah

-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m
-ea
-server
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+UnlockExperimentalVMOptions
-XX:+UseParallelGC

Alih-alih -XX:+UseParallelGC, Anda bisa menggunakan -XX:+UseConcMarkSweepGC, yaitu

pilihan yang diterima untuk aplikasi desktop, tetapi saya telah mengubah ke pengumpul throughput baru-baru ini. karena dengan mesin yang cepat dan heap yang cukup kecil, Anda memiliki jeda cepat, lebih banyak throughput, dan tidak ada masalah dengan fragmentasi (ijuma. #scala)

Perubahan:

-XX:+UseConcMarkSweepGC //removed
// removed, because not needed with the lastest JVM.
    -XX:+UnlockExperimentalVMOptions
    -XX:+DoEscapeAnalysis
    -XX:+UseCompressedOops

Saya akan tetap menggunakan opsi ini untuk saat ini. Saya sangat ingin tahu pengalaman Anda dengannya.

Opsi mana yang paling cocok untuk Anda? Bagaimana cara menyembunyikan jendela cmd ini saat menjalankan intelliJ melalui .bat? :)

Ngomong-ngomong, berikut ini tautan lain untuk menyetel kecerdasan . Pada dasarnya dikatakan di p.20 / 21 untuk mematikan pemulihan windows dan antivirus untuk dirs sistem.

Cara lain untuk mempercepat intellij adalah dengan meletakkan folder sistem intellij di ramdrive (terima kasih OlegYch | h).

from idea.properties 
idea.system.path=${idea.home}/.IntelliJIdea/system

Lihat Superuser untuk Win 7 64bit RAM Drive atau yang ini . 1 GB sepertinya bagus untuk saya.

Petunjuk lain yang diberikan teman kepada saya adalah mengecualikan direktori proyek dari antivirus Anda (pindai saat mengakses)

Ada posting serupa tentang tuning Eclipse:

Stefan K.
sumber
6
Jika versi 64 bit dijalankan, opsi VM akan dibaca dariidea64.exe.vmoptions
Arnaud P
Saya menambahkan pertanyaan serupa, tetapi untuk OS 32-bit (Windows 7) dan RAM 3 GB: IntelliJ IDEA 13.1 - cara mencegah masalah memori rendah pada OS 32-bit (Win 7) dengan RAM 3 GB
krm
Mengapa tidak menjalankan "idea64.exe" secara langsung, alih-alih melalui file .bat? (setidaknya ada idea64.exe di IntelliJ idea 11?
jbarrameda

Jawaban:

32

Kombinasi ini bekerja dengan baik pada Intellij13 saya yang berjalan di Mavericks:

Diperbarui 18 Juli 2017 :

# custom IntelliJ IDEA VM options

-ea
-server
-Xms2G
-Xmx4096M
-Xss2m
-XX:MaxMetaspaceSize=2G
-XX:ReservedCodeCacheSize=1G
-XX:MetaspaceSize=512m
-XX:+UseConcMarkSweepGC
-XX:+DoEscapeAnalysis
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:+UnlockExperimentalVMOptions
-Djava.net.preferIPv4Stack=true
-Dsun.io.useCanonCaches=false
-XX:LargePageSizeInBytes=256m
-XX:+UseCodeCacheFlushing
-XX:ParallelGCThreads=8
-XX:+DisableExplicitGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+PrintGCDetails
-XX:+PrintFlagsFinal
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingOccupancyFraction=60
-XX:+CMSClassUnloadingEnabled
-XX:+CMSParallelRemarkEnabled
-XX:+UseAdaptiveGCBoundary
-XX:+UseSplitVerifier
-XX:CompileThreshold=10000
-XX:+OptimizeStringConcat
-XX:+UseStringCache
-XX:+UseFastAccessorMethods
-XX:+UnlockDiagnosticVMOptions
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseCompressedOops
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd

-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine

Saya terus memperbarui pengaturan ini di https://github.com/adben/config/blob/master/idea64.vmoptions

adben
sumber
3
Anda memiliki banyak duplikasi di sana
vach
3
hati-hati dengan yang ini -XX:+UseCompressedStrings, dari semua yang ada di daftar Anda, ini merusaknya untuk saya, sisanya berhasil.
blamb
2
Terima kasih @adben, IJ di PC saya sangat meningkat. Tapi aku harus menghapus MaxMetaspaceSize, MetaspaceSize, UseCompressedStringskarena mereka tidak didukung dalam IJ 14 di linux x86_64. UseCompressedOopsjangan bekerja untukku juga. Petunjuk: jalankan IJ dari baris perintah untuk melihat pesan kesalahan, di linuxidea.sh
Mixaz
1
-XX: + UseCompressedStrings juga merusaknya untukku pada versi Win8 x64 dan IDEA 64-bit. Segalanya tampak baik-baik saja.
minorgod
Untuk mengedit file ini di tempat pertama, cukup tekan Ctrl + Shift + A untuk popup Find Action dan ketik " Edit Custom VM Options ". Ini secara otomatis akan membuat file yang benar untuk mesin Anda yang dapat Anda edit.
Kevin Cooper
28

Bagi saya beralih ke SSD-drive meningkatkan kinerja banyak (terutama untuk proyek besar).

Yann Cébron
sumber
Saya pasti akan membandingkan kinerja IJ dengan SSD dan HDD!
Gaurav
22

Beberapa waktu lalu saya sedang mencari cara untuk mempercepat kompilasi proyek saya dan itulah hasilnya. Ini bukan untuk IntelliJ IDEA itu sendiri tetapi akan banyak membantu ketika (kembali) membangun proyek besar dan, saya kira, ini akan bekerja dengan IDE lain juga. Juga, saya menjelaskan pendekatan Linux, tetapi saya yakin Windows memiliki implementasi RAM-disk sendiri.

Cara termudah untuk mempercepat kompilasi adalah dengan memindahkan output kompilasi ke RAM disk.

Pengaturan RAM disk

Buka fstab

$ sudo gedit /etc/fstab

(alih-alih geditAnda dapat menggunakan viatau apa pun yang Anda suka)

Siapkan titik pemasangan RAM disk

Saya menggunakan disk RAM di beberapa tempat di sistem saya, dan salah satunya adalah /tmp, jadi saya akan meletakkan output kompilasi saya di sana:

tmpfs /var/tmp tmpfs defaults 0 0

Dalam hal ini, ukuran sistem file Anda tidak akan dibatasi, tetapi tidak masalah, /tmpukuran saya saat ini adalah 73MB. Tetapi jika Anda takut ukuran RAM disk menjadi terlalu besar - Anda dapat membatasi ukurannya, misalnya:

tmpfs /var/tmp tmpfs defaults,size=512M 0 0

Penyiapan proyek

Di IntelliJ IDEA, buka Project Structure ( Ctrl+Alt+Shift+Ssecara default), lalu buka Project - 'Project compiler output' dan pindahkan ke titik pemasangan disk RAM:

/tmp/projectName/out

(Saya telah menambahkan projectNamefolder untuk menemukannya dengan mudah jika saya perlu ke sana atau akan bekerja dengan beberapa proyek pada waktu yang sama)

Lalu, buka Modules, dan di semua modul Anda, buka Paths dan pilih 'Wariskan jalur keluaran kompilasi proyek' atau, jika Anda ingin menggunakan jalur keluaran kompilasi khusus, ubah 'Jalur keluaran' dan 'Uji jalur keluaran' seperti yang Anda lakukan itu untuk memproyeksikan keluaran kompilator sebelumnya.

Itu saja, semuanya!

NB Beberapa angka: waktu kompilasi proyek saya saat ini dalam kasus yang berbeda (perkiraan):

HDD:     80s
SSD:     30s
SSD+RAM: 20s

PPS Jika Anda menggunakan disk SSD, selain mempercepat kompilasi, Anda akan mengurangi operasi tulis pada disk Anda, jadi ini juga akan membantu SSD Anda untuk hidup bahagia selamanya;)

paman Lem
sumber
Solusi ram sangat bagus !! tidak hanya untuk kinerja tetapi juga melindungi masa pakai SSD. terima kasih!
Mojtaba Asg
Saya memindahkan folder cachesdan saya indexmelalui tautan simbolis ke disk RAM, cache Intellij IDEA di RAM Drive menyarankan cara lain untuk melakukannya tanpa tautan simbolis, namun itu akan membutuhkan disk RAM yang lebih besar karena Anda tidak dapat menentukan hanya cache dan folder indeks yang cara. Tak perlu dikatakan lagi, setiap pencarian / pencarian / mengklik sebuah simbol adalah instan atau hampir instan sekarang
ycomp
Bagaimana melakukan ini di windows 10?
Gaurav
@ycomp bisakah Anda menjelaskan cara melakukannya?
SergioLeone
Saya tidak dapat mengingatnya secara spesifik, tetapi mungkin ini lebih merepotkan daripada nilainya. Meskipun itu sangat cepat. Saya tidak dapat mengingat apakah ada masalah khusus yang terkait dengan melakukan itu .. Saya berhenti melakukannya setelah saya bermigrasi ke PC lain
ycomp
20

Mengenai:

Bagaimana cara menyembunyikan jendela cmd ini saat menjalankan intelliJ melalui .bat?

Gunakan perintah 'start' dan javaw.exe bersamaan, jadi, jika Anda memiliki:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\java.exe
...
"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*

ubah menjadi:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\javaw.exe
...
start "Intellij IDEA" /b "%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*
Dilum Ranatunga
sumber
19

Hal paling berguna yang dapat Anda lakukan untuk IntelliJ adalah memiliki banyak memori kosong untuk cache disk . IntelliJ menyimpan banyak pekerjaan pemrosesannya dalam file cache. Ini berfungsi dengan baik jika Anda memiliki banyak memori kosong, tetapi jika cache disk Anda terbatas, Anda akan melihat jeda yang teratur dan tahan lama.

Saya lebih menyarankan -XX:+UseConcMarkSweepGCdaripada G1.

Saya juga mengerjakan salinan file lokal untuk meminimalkan penundaan akses file.

BTW : Untuk proyek yang sedang saya kerjakan, saya melihat perbedaan antara mengerjakan mesin dengan 24 GB dan satu dengan 48 GB, meskipun tumpukan maksimum disetel ke 2 GB;)

Peter Lawrey
sumber
4
Bagi saya, realisasi yang paling penting adalah ketika berhenti, itu bukan karena GC, melainkan harus membaca ulang data dari disk.
Peter Lawrey
3
Perbedaan antara mesin 48GB dan mesin 24GB kemungkinan besar disebabkan oleh cache tingkat sistem file / OS menggunakan ram tambahan.
cdeszaq
4

Saya telah melakukan beberapa percobaan, dan menemukan bahwa untuk menurunkan GC berhenti kombinasi berikut yang terbaik: -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50.

Saya juga tidak akan membuat heap terlalu besar, 512 atau bahkan lebih kecil tidak masalah bagi saya. Jika tidak, ketika sudah penuh, GC harus menjalankan semuanya yang membutuhkan waktu.

Peter Gromov
sumber
2

Tidak yakin mengapa belum disebutkan - Anda dapat mengaktifkan Power Save mode, yang mematikan banyak aktivitas latar belakang IJ , termasuk Files Synchronization. Beberapa artikel mengatakan bahwa dimungkinkan untuk menonaktifkan Sinkronisasi File dalam opsi struktur proyek (seperti artikel di jawaban oleh @ OJ278), tetapi saya tidak dapat menemukan opsi ini di IJ 14 , tetapi Power Save modetampaknya menonaktifkannya.

Saya memiliki basis kode yang cukup besar ( kode sumber AOSP ), jadi aktivitas HD karena sinkronisasi file latar belakang mengganggu ...

Mixaz
sumber
1

Anda dapat menggunakan plugin pengoptimal intellij:

https://zeroturnaround.com/free/optimizer-for-intellij-idea/

Dengan plugin Anda dapat:

  • Opsi mesin virtual tune otomatis
  • Nonaktifkan verifikasi kelas
  • Bersihkan cache sistem
  • Konfigurasikan alat build eksternal
  • Validasi Oracle JDK terbaru
  • Lewati pembuatan dan penerapan ulang
iberck
sumber
Mengapa tidak memilih? pertanyaannya adalah tentang menyetel intellij dan ini adalah solusinya
iberck
2
Sayangnya, plugin tersebut sepertinya ditarik.
nilo de roock
1

Jawaban yang diberikan oleh adbensangat membantu untuk meningkatkan kinerja mesin saya. Meskipun saya sedikit menimpanya setelah membaca artikel Dzone,

-server
-Xms2g
-Xmx2g
-XX:NewRatio=3
-Xss16m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:ConcGCThreads=4
-XX:ReservedCodeCacheSize=240m
-XX:+AlwaysPreTouch
-XX:+TieredCompilation
-XX:+UseCompressedOops
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-ea

Mereka meningkatkan kinerja proyek besar dengan menggunakan konfigurasi di atas dan bekerja dengan sempurna untuk proyek kami juga. Terakhir, saya menonaktifkan semua plugin yang tidak akan saya gunakan dan itu meningkatkan semuanya juga.

Referensi: https://dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea

Chaklader Asfak Arefe
sumber
0

Saya menggunakan kombinasi ini dan bekerja dengan baik di lingkungan saya

-server
-Xms2048m
-Xmx2048m
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+UseParNewGC
-XX:ParallelGCThreads=4
-XX:MaxTenuringThreshold=1
-XX:SurvivorRatio=8
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=65
-XX:+CMSScavengeBeforeRemark
-XX:+UseCMSInitiatingOccupancyOnly
-XX:ReservedCodeCacheSize=64m
-XX:-TraceClassUnloading
-ea
-Dsun.io.useCanonCaches=false
Yasir Shabbir Choudhary
sumber
Jangan sertakan -XX:+UseParNewGCdengan versi CLion terbaru. Opsi tidak valid.
Sandu Liviu Catalin