'java'에 해당하는 글 4건

이클립스를 써서 Java 프로그램을 개발할 때 JVM 버전을 여러 개를 사용해야 할 때가 있다. 그런데 사용하는 이클립스 버전에 따라, JVM 버전이 너무 낮으면 이클립스 자체를 실행할 수 없을 수도 있다.

나 혼자 쓰는 컴퓨터라면 그때그때마다 JDK 기본 경로를 바꿔서 하면 되지만, 여러 명이 쓰는 공용 서버에서는 마음대로 버전을 바꿀 수가 없다.


바로 이럴 때 eclipse.ini 파일에 -vm 옵션을 설정하는 것만으로 이클립스가 사용할 JDK 경로를 변경해서 JVM 버전을 맞춰줄 수 있다.


우선 내가 원하는 JDK가 깔려있는 경로를 확인할 겸, 서버에 설치된 JDK 목록을 살펴보기로 한다.


update-alternatives 명령어로 현재 기기에 설치되어 있는 다양한 자바 버전을 확인할 수 있다.

* update-alternatives 명령어를 통해 이런 식으로 같은 프로그램의 여러 버전을 설치해서 관리할 수 있다. 하지만 이 포스팅의 목적을 벗어나므로 자세한 설명은 생략한다.


$ update-alternatives --config java


나는 JDK 8이 필요하고, 같은 서버를 공유하는 연구실 선배는 6을 필요로 해서 6이 기본으로 설정 되어있는 것을 볼 수 있다. mode 4 옆에 '*' 표시가 있는 것이 현재 기본 세팅을 나타낸다.


이제 eclipse.ini 파일을 수정해서 JVM 설정을 바꿔보자.


eclipse.ini 파일은 eclipse.exe가 있는 디렉토리에 같이 들어있다.

리눅스라면 nano나 vim 등의 에디터로 열면 되고 윈도라면 더블클릭만 해도 메모장으로 알아서 열린다.

* 리눅스에서는 sudo 붙여서 열어야 한다.


$ sudo nano <path/to/eclipse.ini>



위와 같이 계정 비밀번호 친 후 superuser 권한을 획득한다.

(쓰고 있는 계정이 su 등록되어있지 않다면 최소한 root 계정으로 로그인 해야 하는데, 루트 알면 그냥 su 등록도 해놓자. su 등록도 이 포스팅이 범위를 벗어나므로 자세한 설명은 생략한다.)



eclipse.ini 편집 화면에서 위 그림과 같은 위치에 다음 내용을 입력한다.


-vm

<path/to/installed/java>

자바 설치된 경로는 설치 상시에 어떻게 세팅했는지 알 수 없으니까; 알아서 잘 넣기 바란다.

* 윈도우 유저라면 java.exe


-vm 옵션을 넣을 때의 주의사항

  • -vm 옵션과 그 설정값(JVM 경로)은 반드시 분리된 라인에 있어야 한다. (위의 스크린샷에서도 -vm 다음줄에 JVM 경로를 적었다.)
  • 설정값은 단순히 Java home directory까지가 아니라 Java 실행파일 까지의 완전한 경로여야 한다.
  • -vm 옵션은 반드시 -vmargs 옵션 전에 넣어야 한다. -vmargs 뒤에 있는 옵션은 JVM 자체에 직접적으로 전해지는 값이다.
  • (아마도 윈도우 기준으로) 32비트 이클립스에는 32비트 JVM, 64비트 이클립스에는 64비트 JVM을 사용해야 한다.


참조: 

http://wiki.eclipse.org/Eclipse.ini

http://stackoverflow.com/questions/1410511/eclipse-jvm-configuration


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

자바 언어로 쓰인 프로그램을 위한 성능 분석 유료 툴인 JProfiler. (공식 홈페이지)


이클립스같은 IDE 환경으로 실행하든, 콘솔창에서 직접 실행하든 일단 분석할 프로그램을 실행시킨 후에

JProfiler 툴 상에서 Attach 버튼을 눌러 JProfiler 툴을 실행중인 자바 프로그램에 연결한다.

그리고 Start Recordings 버튼 눌러서 레코딩을 활성화하면 프로그램의 call tree, call graph, method statistic 등을 쉽게 분석할 수 있다.

뭐 자세한 건 그냥 구글링 해보는 게 더 빠를 것 같다. 나도 어제 처음 써본 툴이라서.




처음 설치 후 10일 동안은 무료 체험이 가능하지만 정식 라이센스를 구매하려면 아카데믹 라이센스를 사더라도 199 usd.........


http://www.cnblogs.com/jifeng/p/3336408.html

위 링크에서 view code를 누르면 라이센스 키 줍줍 가능.


thread profiling 정보나 좀 알아봐야겠다.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,
스트링이나 뭐 이런저런거 콘솔로 찍어보는 것보다 파일로 출력해야 할 때.

여기서 가져왔다.


BufferedWriter writer = null;
try
{
    writer = new BufferedWriter( new FileWriter( yourfilename));
    writer.write( yourstring);

}
catch ( IOException e)
{
}
finally
{
    try
    {
        if ( writer != null)
        writer.close( );
    }
    catch ( IOException e)
    {
    }
}


'엥그니어링 > 도움글' 카테고리의 다른 글

크롬 글자 간격 문제 해결  (0) 2015.02.16
우분투 서버에 이클립스 설치  (0) 2015.02.16
Java 시간 측정  (0) 2014.09.02
자주 쓰는 프로그램 바로가기 키 설정  (0) 2014.08.24
Day One 타임라인 관리  (0) 2014.07.22

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

// start time

long start_time = System.currentTimeMillis();


// main program source code


// end time

long end_time = System.currentTimeMillis();


// compute elapsed time and send to console

System.out.println("경과 시간: " + (end_time - start_time) + " ms");



1. 함수 이름에서 알 수 있듯이 millisecond 단위로 측정하는 것이기 때문에 초 단위로 보고싶다면 다음과 같은 방법으로 계산한다.


System.out.println("경과 시간: " + (end_time - start_time)/1000.0 );



2. 원래부터 있었는지, 언젠가부터 추가된 건지는 모르겠지만 nano단위로도 측정이 가능하니까 좀 더 자세히 측정하고 싶다면 써보자.


long start_time = System.nanoTime();

long end_time = System.nanoTime();



3. nanosecond 단위로 측정했을 때도 적당히 나눗셈을 잘 해주면 보고싶은 단위로 출력이 가능하니까 잘 활용하자.


// micro

long start_time = System.nanoTime();

long end_time = System.nanoTime();

System.out.println("경과 시간: " + (end_time - start_time)/1000.0 );

// milli

long start_time = System.nanoTime();

long end_time = System.nanoTime();

System.out.println("경과 시간: " + (end_time - start_time)/1000000.0 );


...


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,