IntelliJ-Idea 가속화


92

저는 Scala 개발을 위해 intelliJ를 사용하고 있으며 지난주에 8GB 의 새 RAM을 얻었 으므로 사용할 시간이라고 생각했습니다. 내 작업 관리자를 확인하고 ~ 250mb를 사용하여 intelliJ를 찾았습니다 . Eclipse에서 JVM 옵션을 조정하는 것이 속도 향상에 많은 도움이된다는 것을 알았으므로 검색했습니다.

발견 OS X이 하나 내가 조정 시작, 그래서 바로 JVM 옵션을 찾을 수 없습니다 I을 의 -Xmx를. 1GB에서 더 이상 시작되지 않는다는 것을 깨달았습니다. intelliJ Java 버전을 확인한 결과 구식이고 32 비트라는 것을 알았습니다.

따라서 현재 JDK 및 64 비트 를 사용하려면 링크를 다음과 같이 변경해야합니다.

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

"시작"조정

박쥐는 JDK_HOME이제 64 비트를 찾고 사용합니다.

내 현재 VM 옵션 은 다음 위치에 있습니다.

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

아르

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

대신 -XX:+UseParallelGC사용할 수 있습니다 -XX:+UseConcMarkSweepGC.

데스크톱 앱에 허용되는 선택이지만 최근에 처리량 수집기로 변경했습니다. 빠른 시스템과 충분히 작은 힙을 사용하면 빠른 일시 중지, 더 많은 처리량 및 조각화 문제가 없기 때문입니다 (ijuma. #scala).

변경 사항 :

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

지금은이 옵션을 고수하겠습니다. 나는 그것에 대한 당신의 경험을 정말로 알고 싶습니다.

가장 적합한 옵션은 무엇입니까? intelliJ를 실행하는 동안이 cmd 창을 어떻게 숨깁 .bat니까? :)

그건 그렇고, 여기 intelliJ 튜닝을 위한 또 다른 링크가 있습니다. 기본적으로 그것은에 말한다 p.20 참조 / 21 시스템 DIRS에 대한 복원 창을 끕니다 및 바이러스 백신.

intelliJ 속도를 높이는 또 다른 방법은 intellij 시스템 폴더를 ramdrive 에 넣는 것입니다 (OlegYch | h에게 감사드립니다).

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

Win 7 64 비트 RAM 드라이브 또는 드라이브 용 수퍼 유저를 참조하십시오 . 1GB는 괜찮아 보입니다.

친구가 내게 준 또 다른 힌트는 바이러스 백신에서 프로젝트 디렉토리제외하는 것입니다 (액세스시 스캔).

Eclipse 튜닝과 관련된 유사한 게시물이 있습니다.


6
64 비트 버전이 실행되면 VM 옵션은 idea64.exe.vmoptions
Arnaud P

비슷한 질문을 추가했지만 32 비트 OS (Windows 7) 및 3GB RAM의 경우 : IntelliJ IDEA 13.1-3GB
krm

.bat 파일 대신 "idea64.exe"를 직접 실행하지 않는 이유는 무엇입니까? (적어도 IntelliJ 아이디어 11에
idea64.exe가

답변:


32

이 조합은 Mavericks에서 실행되는 Intellij13에서 잘 작동합니다.

2017 년 7 월 18 일 업데이트 :

# 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

https://github.com/adben/config/blob/master/idea64.vmoptions 에서이 설정을 업데이트합니다.


3
당신은 거기에 많은 중복이 있습니다
vach

3
이 목록을 조심 -XX:+UseCompressedStrings하십시오. 이것은 나를 위해 그것을 깨뜨 렸고 나머지는 작동했습니다.
blamb

2
감사합니다 @adben, 내 PC에서 IJ가 크게 향상되었습니다. 하지만 MaxMetaspaceSize, 를 제거해야했습니다 MetaspaceSize. UseCompressedStrings왜냐하면 linux x86_64의 IJ 14에서는 지원되지 않기 때문입니다. UseCompressedOops나를 위해 일하지도 않습니다. 힌트 : 오류 메시지를 보려면 명령 줄에서 IJ를 실행하십시오. Linux에서는idea.sh
Mixaz

1
-XX : + UseCompressedStrings는 Win8 x64 및 IDEA 64 비트 버전에서도 나에게 문제가되었습니다. 다른 모든 것은 괜찮아 보입니다.
minorgod

처음에이 파일을 편집하려면 작업 찾기 팝업에서 Ctrl + Shift + A 를 누르고 " 사용자 지정 VM 옵션 편집 "을 입력하면됩니다. 편집 할 수있는 컴퓨터에 대한 올바른 파일이 자동으로 생성됩니다.
Kevin Cooper

28

저에게 SSD 드라이브로 전환하면 성능이 크게 향상되었습니다 (특히 대규모 프로젝트의 경우).


SSD와 HDD로 IJ 성능을 확실히 벤치마킹 할 것입니다!
Gaurav

22

얼마 전에 프로젝트의 컴파일 속도를 높일 수있는 방법을 찾고 있었는데 그 결과입니다. 이것은 IntelliJ IDEA 자체가 아니지만 큰 프로젝트를 (재) 구축 할 때 많은 도움이 될 것이며 다른 IDE에서도 작동 할 것이라고 생각합니다. 또한 Linux 접근 방식에 대해 설명했지만 Windows에 자체 RAM 디스크 구현이 있다고 확신합니다.

컴파일 속도를 높이는 가장 쉬운 방법은 컴파일 출력을 RAM 디스크로 이동하는 것입니다.

RAM 디스크 설정

fstab 열기

$ sudo gedit /etc/fstab

(대신 gedit당신이 vi원하는대로 사용할 수 있습니다 )

RAM 디스크 마운트 지점 설정

시스템의 여러 위치에서 RAM 디스크를 사용하고 있는데 그중 하나는 /tmp이므로 컴파일 출력을 거기에 넣겠습니다.

tmpfs /var/tmp tmpfs defaults 0 0

이 경우 파일 시스템 크기는 제한되지 않지만 괜찮 /tmp습니다. 현재 내 크기는 73MB입니다. 그러나 RAM 디스크 크기가 너무 커질 까봐 두렵다면 크기를 제한 할 수 있습니다. 예 :

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

프로젝트 설정

IntelliJ IDEA에서 프로젝트 구조 ( Ctrl+Alt+Shift+S기본적으로)를 연 다음 프로젝트- '프로젝트 컴파일러 출력'으로 이동하여 RAM 디스크 마운트 지점으로 이동합니다.

/tmp/projectName/out

( projectName필요한 경우 쉽게 찾을 수 있도록 폴더를 추가 했거나 여러 프로젝트를 동시에 작업 할 것입니다)

그런 다음 모듈로 이동하고 모든 모듈에서 경로로 이동하여 '프로젝트 컴파일 출력 경로 상속'을 선택하거나 사용자 지정 컴파일 출력 경로를 사용하려면 '출력 경로'및 '테스트 출력 경로'를 수정합니다. 그것은 전에 컴파일러 출력을 프로젝트합니다.

그게 다야!

추신 : 몇 가지 숫자 : 다른 경우에 내 현재 프로젝트 컴파일 시간 (대략) :

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

PPS SSD 디스크를 사용하면 컴파일 속도가 빨라지는 것 외에도 디스크에서 쓰기 작업이 줄어들어 SSD가 행복하게 살 수 있도록 도와줍니다;)


램 솔루션은 훌륭합니다! 성능뿐만 아니라 SSD 수명도 보호합니다. 감사합니다!
Mojtaba Asg 2015

심볼릭 링크를 통해 내 폴더 cachesindex폴더를 RAM 디스크 로 옮겼 습니다. RAM 드라이브의 Intellij IDEA 캐시는 심볼릭 링크없이 수행 할 수있는 또 다른 방법을 제안하지만 캐시 및 색인 폴더 만 지정할 수 없기 때문에 더 큰 RAM 디스크가 필요합니다. 방법. 말할 필요도없이 기호를 검색 / 조회 / 클릭하는 것은 즉시 또는 거의 즉각적입니다
ycomp

Windows 10에서이 작업을 수행하는 방법은 무엇입니까?
Gaurav

@ycomp 어떻게 할 수 있는지 자세히 설명해 주시겠습니까?
SergioLeone 19

구체적으로 기억할 수는 없지만 가치가있는 것보다 문제가 더 많을 것입니다. 빨리 사악했지만. 이 작업과 관련된 특정 문제가 있었는지 기억이 나지 않습니다. 다른 PC로 마이그레이션 한 후 중단했습니다.
ycomp

20

에 관해서:

.bat를 통해 intelliJ를 실행하는 동안이 cmd 창을 어떻게 숨깁니까?

'start'명령과 javaw.exe를 함께 사용하십시오.

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

다음으로 변경하십시오.

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

IntelliJ에서 할 수있는 가장 유용한 일은 디스크 캐싱을위한 많은 여유 메모리 를 확보하는 것 입니다. IntelliJ는 캐시 된 파일에 많은 처리 작업을 저장합니다. 여유 메모리가 많으면 잘 작동하지만 디스크 캐시가 제한되어 있으면 규칙적이고 오래 지속되는 일시 중지가 표시됩니다.

나는 -XX:+UseConcMarkSweepGC보다는 오히려 제안 할 것 G1입니다.

또한 파일 액세스 지연을 최소화하기 위해 파일의 로컬 복사본을 작업합니다.

BTW : 현재 진행중인 프로젝트에서 최대 힙이 2GB로 설정되어 있어도 24GB의 컴퓨터와 48GB의 컴퓨터에서 작업하는 것의 차이를 발견했습니다.)


4
저에게 가장 중요한 사실은 일시 중지 될 때 GC 때문이 아니라 디스크에서 데이터를 다시 읽어야한다는 것입니다.
Peter Lawrey 2011

3
48GB 시스템과 24GB 시스템 간의 차이는 추가 램을 사용하는 파일 시스템 / OS 수준 캐싱 때문일 수 있습니다.
cdeszaq

4

몇 가지 실험을 해본 결과 GC 일시 중지를 줄이려면 다음 조합이 가장 잘 작동하는 것으로 나타났습니다 -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50..

나는 또한 힙을 너무 크게 만들지 않을 것입니다. 512 이하는 괜찮습니다. 그렇지 않으면 가득 차면 GC가 모든 것을 걸어야하는데 시간이 걸립니다.



2

아직 언급되지 않은 이유가 확실하지 않습니다.을 (를) 활성화 하여을 포함한 Power Save mode많은 IJ 백그라운드 활동을 끌 수 있습니다 Files Synchronization. 일부 기사에서는 @ OJ278의 답변 기사와 같이 프로젝트 구조 옵션에서 파일 동기화를 비활성화 할 수 있다고 말하지만 IJ 14 에서이 옵션을 찾을 수 없었지만 Power Save mode비활성화하는 것 같습니다.

나는 꽤 큰 코드베이스 ( AOSP 소스 코드)를 가지고있어서 백그라운드 파일 동기화로 인한 HD 활동이 성가시다 ...


1

intellij의 최적화 플러그인을 사용할 수 있습니다.

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

플러그인으로 다음을 수행 할 수 있습니다.

  • 가상 머신 옵션 자동 조정
  • 수업 확인 비활성화
  • 시스템 캐시 정리
  • 외부 빌드 도구 구성
  • 최신 Oracle JDK 검증
  • 빌드 건너 뛰기 및 재배포

왜 반대표? 문제는 조정 IntelliJ에 관한이 해결책이다
iberck

2
안타깝게도 플러그인이 제거 된 것 같습니다.
nilo de roock

1

에서 제공하는 답변 adben은 내 컴퓨터의 성능을 개선하는 데 매우 유용합니다. 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

그들은 위의 구성을 사용하여 대규모 프로젝트의 성능을 향상 시켰으며 우리 프로젝트에서도 완벽하게 작동합니다. 마지막으로, 사용하지 않을 모든 플러그인을 비활성화하여 상황을 개선했습니다.

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


0

이 조합을 사용했는데 내 환경에서 잘 작동합니다.

-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

-XX:+UseParNewGC최신 CLion 버전 에는 포함하지 마십시오 . 잘못된 옵션입니다.
Sandu Liviu Catalin

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.