Tăng tốc IntelliJ-Idea


92

Tôi đang sử dụng intelliJ để phát triển Scala và nhận được 8 GB RAM mới vào tuần trước, vì vậy tôi nghĩ: đã đến lúc sử dụng nó. Tôi đã kiểm tra trình quản lý tác vụ của mình và thấy intelliJ đang sử dụng ~ 250mb . Từ nhật thực, tôi biết rằng việc điều chỉnh các tùy chọn JVM đã giúp rất nhiều trong việc cải thiện tốc độ, vì vậy tôi đã tìm kiếm ...

và tìm thấy cái này cho OS X Tôi không thể tìm thấy tùy chọn JVM ngay lập tức, vì vậy tôi bắt đầu điều chỉnh Xmx. Ở mức 1 GB, tôi nhận ra rằng nó không bắt đầu nữa. Tôi đã kiểm tra phiên bản java intelliJ, thấy nó đã lỗi thời và 32bit.

Vì vậy, để sử dụng JDK và 64 bit hiện tại của bạn, bạn phải thay đổi liên kết của mình thành:

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

đến

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

và điều chỉnh "Bắt đầu trong"

Con dơi hiện đang tìm kiếm JDK_HOMEvà sử dụng 64bit.

Tùy chọn VM hiện tại của tôi , được đặt tại

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

Chúng tôi

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

Thay vào đó -XX:+UseParallelGC, bạn có thể sử dụng -XX:+UseConcMarkSweepGC,

lựa chọn được chấp nhận cho các ứng dụng dành cho máy tính để bàn, nhưng gần đây tôi đã thay đổi bộ thu thập thông lượng. bởi vì với một máy nhanh và một heap đủ nhỏ, bạn có thể tạm dừng nhanh chóng, lưu lượng nhiều hơn và không gặp vấn đề về phân mảnh (ijuma. #scala)

Các thay đổi:

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

Tôi sẽ bám vào các tùy chọn này ngay bây giờ. Tôi thực sự muốn biết kinh nghiệm của bạn với nó.

Tùy chọn nào phù hợp nhất với bạn? Làm cách nào để ẩn cửa sổ cmd này trong khi chạy intelliJ thông qua .bat? :)

Nhân tiện, đây là một liên kết khác để điều chỉnh intelliJ . Về cơ bản, nó cho biết trên p.20 / 21 để tắt khôi phục cửa sổ và chống vi-rút cho dirs hệ thống.

Một cách khác để tăng tốc IntelliJ là đặt IntelliJ thư mục hệ thống trên ramdrive (nhờ OlegYch | h).

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

Xem Superuser cho Win 7 64bit RAM Drive hoặc cái này . 1 GB có vẻ ổn đối với tôi.

Một gợi ý khác mà một người bạn đã cho tôi là loại trừ các thư mục dự án khỏi phần mềm chống vi-rút của bạn (quét khi truy cập)

Có những bài viết tương tự về cách điều chỉnh Eclipse:


6
Nếu phiên bản 64 bit được chạy, các tùy chọn VM sẽ được đọc từidea64.exe.vmoptions
Arnaud P

Tôi đã thêm một câu hỏi tương tự, nhưng đối với HĐH 32 bit (Windows 7) và RAM 3 GB: IntelliJ IDEA 13.1 - cách ngăn vấn đề bộ nhớ thấp trên HĐH 32 bit (Win 7) với RAM 3GB
KB

Tại sao không chạy "idea64.exe" trực tiếp, thay vì chạy qua tệp .bat? (ít nhất có idea64.exe trong IntelliJ idea 11?
jbarrameda

Câu trả lời:


32

Sự kết hợp này hoạt động tuyệt vời trên Intellij13 của tôi đang chạy trong Mavericks:

Cập nhật ngày 18 tháng 7 năm 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

Tôi cập nhật cài đặt này tại https://github.com/adben/config/blob/master/idea64.vmoptions


3
bạn có rất nhiều sự trùng lặp trong đó
vach

3
hãy cẩn thận với cái này -XX:+UseCompressedStrings, trong số tất cả trong danh sách của bạn, cái này đã phá vỡ nó đối với tôi, phần còn lại hiệu quả.
blamb

2
Cảm ơn @adben, IJ đã được cải thiện rất nhiều trên PC của tôi. Nhưng tôi phải loại bỏ MaxMetaspaceSize, MetaspaceSize, UseCompressedStringsvì họ không được hỗ trợ trong IJ 14 trên x86_64 Linux. UseCompressedOopscũng không hiệu quả với tôi. Gợi ý: chạy IJ từ dòng lệnh để xem thông báo lỗi, trên linux nóidea.sh
Mixaz

1
-XX: + UseCompressedStrings cũng đã phá vỡ nó cho tôi trên Win8 x64 và IDEA phiên bản 64-bit. Mọi thứ khác có vẻ ổn.
nhỏ

Để chỉnh sửa tệp này ngay từ đầu, chỉ cần nhấn Ctrl + Shift + A cho cửa sổ bật lên Tìm Hành động và nhập " Chỉnh sửa Tùy chọn VM Tùy chỉnh ". Nó sẽ tự động tạo tệp chính xác cho máy của bạn mà bạn có thể chỉnh sửa.
Kevin Cooper

28

Đối với tôi, việc chuyển sang ổ SSD đã cải thiện hiệu suất rất nhiều (đặc biệt là cho các dự án lớn).


Tôi chắc chắn sẽ đánh giá hiệu suất IJ với SSD và HDD!
Gaurav

22

Một thời gian trước, tôi đã tìm cách để tăng tốc quá trình biên dịch dự án của mình và đó là kết quả. Điều này không dành cho bản thân IntelliJ IDEA nhưng sẽ giúp ích rất nhiều khi (lại) xây dựng một dự án lớn và, tôi đoán, nó cũng sẽ hoạt động với bất kỳ IDE nào khác. Ngoài ra, tôi đã mô tả cách tiếp cận của Linux, nhưng tôi chắc chắn rằng Windows có các triển khai đĩa RAM riêng.

Cách dễ nhất để tăng tốc độ biên dịch là chuyển đầu ra biên dịch vào đĩa RAM.

Thiết lập đĩa RAM

Mở fstab

$ sudo gedit /etc/fstab

(thay vì geditbạn có thể sử dụng vihoặc bất cứ điều gì bạn thích)

Thiết lập điểm gắn đĩa RAM

Tôi đang sử dụng đĩa RAM ở một số nơi trong hệ thống của mình và một trong số đó là /tmp, vì vậy tôi sẽ chỉ đặt đầu ra biên dịch của mình ở đó:

tmpfs /var/tmp tmpfs defaults 0 0

Trong trường hợp này, kích thước hệ thống tệp của bạn sẽ không bị giới hạn, nhưng không sao, /tmpkích thước của tôi hiện tại là 73MB. Nhưng nếu bạn sợ rằng kích thước đĩa RAM sẽ trở nên quá lớn - bạn có thể giới hạn kích thước của nó, ví dụ:

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

Thiết lập dự án

Trong IntelliJ IDEA, hãy mở Cấu trúc dự án ( Ctrl+Alt+Shift+Stheo mặc định), sau đó đi tới Dự án - 'Đầu ra trình biên dịch dự án' và di chuyển nó đến điểm gắn kết đĩa RAM:

/tmp/projectName/out

(Tôi đã thêm projectNamethư mục để dễ dàng tìm thấy nó nếu tôi cần đến đó hoặc sẽ làm việc với nhiều dự án cùng một lúc)

Sau đó, đi tới Mô-đun và trong tất cả các mô-đun của bạn, hãy đi tới Đường dẫn và chọn 'Kế thừa đường dẫn đầu ra biên dịch dự án' hoặc, nếu bạn muốn sử dụng đường dẫn đầu ra biên dịch tùy chỉnh, hãy sửa đổi 'Đường dẫn đầu ra' và 'Đường dẫn đầu ra kiểm tra' theo cách bạn đã làm nó đến đầu ra của trình biên dịch dự án trước đó.

Đó là tất cả, các bạn!

Tái bút Một vài con số: thời gian biên soạn dự án hiện tại của tôi trong các trường hợp khác nhau (ước chừng):

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

PPS Nếu bạn sử dụng đĩa SSD, ngoài việc tăng tốc độ biên dịch, bạn sẽ giảm các thao tác ghi trên đĩa, vì vậy nó cũng sẽ giúp SSD của bạn sống vui vẻ mãi mãi;)


Giải pháp Ram là tuyệt vời !! không chỉ cho hiệu suất mà còn bảo vệ tuổi thọ SSD. cảm ơn!
Mojtaba Asg

Tôi đã di chuyển của mình cachesindexcác thư mục thông qua liên kết tượng trưng vào đĩa RAM, bộ nhớ cache Intellij IDEA trong Ổ đĩa RAM gợi ý một cách khác để thực hiện điều đó mà không có liên kết tượng trưng, ​​tuy nhiên, nó sẽ yêu cầu đĩa RAM lớn hơn vì bạn không thể chỉ định các bộ nhớ đệm và chỉ mục các thư mục đường. Không cần phải nói, bất kỳ tìm kiếm / tra cứu / nhấp vào biểu tượng nào bây giờ là tức thì hoặc gần như tức thì
ycomp

Làm thế nào để làm điều này trên Windows 10?
Gaurav

@ycomp, bạn có thể vui lòng giải thích thêm về cách làm điều đó không?
SergioLeone

Tôi không thể nhớ cụ thể, nhưng nó có lẽ rắc rối hơn đáng giá. Mặc dù nó đã xấu xa nhanh chóng. Tôi không thể nhớ nếu có bất kỳ vấn đề cụ thể liên quan đến thực hiện điều đó .. Tôi ngừng làm việc đó một lần tôi đã di chuyển đến một máy tính
ycomp

20

Về:

Làm cách nào để ẩn cửa sổ cmd này trong khi chạy intelliJ thông qua .bat?

Sử dụng lệnh 'start' và javaw.exe cùng nhau, vì vậy, nếu bạn có:

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

thay đổi nó thành:

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

19

Điều hữu ích nhất bạn có thể làm đối với IntelliJ là có nhiều bộ nhớ trống cho bộ nhớ đệm đĩa . IntelliJ lưu rất nhiều công việc xử lý của nó trong các tệp được lưu trong bộ nhớ cache. Điều này hoạt động tốt nếu bạn có nhiều bộ nhớ trống, nhưng nếu bộ nhớ cache ổ đĩa của bạn bị giới hạn, bạn sẽ thấy các lần tạm dừng thường xuyên và kéo dài.

Tôi sẽ đề nghị -XX:+UseConcMarkSweepGCchứ không phải G1.

Tôi cũng làm việc với các bản sao cục bộ của tệp để giảm thiểu độ trễ truy cập tệp.

BTW : Đối với dự án mà tôi đang thực hiện, tôi nhận thấy sự khác biệt giữa làm việc trên máy có 24 GB và máy có 48 GB, mặc dù heap tối đa được đặt thành 2 GB;)


4
Đối với tôi, nhận thức quan trọng nhất là khi nó tạm dừng, nó không phải do GC, mà là do phải đọc lại dữ liệu trên đĩa.
Peter Lawrey

3
Sự khác biệt giữa máy 48 GB và máy 24 GB có thể là do hệ thống tệp / bộ nhớ đệm cấp hệ điều hành sử dụng ram bổ sung.
cdeszaq,

4

Tôi đã thực hiện một số thử nghiệm, và thấy rằng để giảm GC tạm dừng sự kết hợp sau đây hoạt động tốt nhất: -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50.

Tôi cũng sẽ không làm cho heap quá lớn, 512 hoặc thậm chí nhỏ hơn là OK đối với tôi. Nếu không, khi nó đầy, GC sẽ phải đi lại tất cả, điều này sẽ mất một thời gian.



2

Không rõ tại sao nó vẫn chưa được đề cập - bạn có thể bật Power Save mode, tắt nhiều hoạt động nền IJ , bao gồm cả Files Synchronization. Một số bài báo nói rằng có thể tắt Đồng bộ hóa tệp trong tùy chọn cấu trúc dự án (như bài viết trong câu trả lời của @ OJ278), nhưng tôi không thể tìm thấy tùy chọn này trong IJ 14 , nhưng Power Save modedường như đã tắt nó.

Tôi có một cơ sở mã khá lớn ( mã nguồn AOSP ), vì vậy hoạt động HD do đồng bộ hóa tệp nền rất khó chịu ...


1

Bạn có thể sử dụng plugin trình tối ưu hóa của intellij:

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

Với plugin, bạn có thể:

  • Tự động điều chỉnh các tùy chọn máy ảo
  • Tắt xác minh lớp học
  • Dọn dẹp bộ nhớ đệm hệ thống
  • Định cấu hình các công cụ xây dựng bên ngoài
  • Xác thực Oracle JDK mới nhất
  • Bỏ qua xây dựng và triển khai lại

Tại sao lại bỏ phiếu? câu hỏi là về điều chỉnh IntelliJ và đây là một giải pháp
iberck

2
Đáng buồn thay, plugin dường như bị kéo.
nilo de roock

1

Câu trả lời được cung cấp adbenrất hữu ích cho việc cải thiện hiệu suất trong máy của tôi. Mặc dù tôi đã ghi đè nó một chút sau khi đọc một bài báo của 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

Họ đã cải thiện hiệu suất của các dự án lớn bằng cách sử dụng cấu hình trên và hoạt động hoàn hảo cho các dự án của chúng tôi. Cuối cùng, tôi đã tắt tất cả các plugin mà tôi sẽ không sử dụng và điều đó cũng cải thiện mọi thứ.

Tham khảo: https://dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea


0

Tôi đã sử dụng sự kết hợp này và nó hoạt động tốt trong môi trường của tôi

-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

Không bao gồm -XX:+UseParNewGCcác phiên bản CLion gần đây. Tùy chọn không hợp lệ.
Sandu Liviu Catalin

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.