2019/03

알게된 것Spring의 bean 객체는 GarbageColecor 대상이 될까?Spring이 관리하는 bean은 스프링 컨테이너가 시작될 때 생성되고 스프링 컨테이너가 중지될 때 삭제가 됨Spring 싱글톤 객체가 단순한 Java 객체와 다른 이유는 컨테이너가 해당 객체에 대한 참조를 유지하며 언제든지 코드 아무곳에서나 사용할 수 있기 때문임즉, Spring Container가 bean을 잡고 있기 때문에 GC의 대상이 안되며, Spring Container가 중지되어야지만 삭제됨When is a Spring Singleton bean garbage collected?=> 대상 ㄴㄴ, The reason is spring containers always maintains a reference to it ..
eclipse.ini을 통해 이클립스를 최적화해보자 이클립스를 처음 설치하고 실행하다보면 Heap 메모리 사이즈가 적게 설정이 된다. 그렇기 때문에 이클립스를 사용하다보면 시스템 과부하나 메모리 부족현상을 경험할 수 있을 것이다. 이클립스를 사용할 때 메모리를 충분히 늘려주고 사용하는 것이 정신겅강에 좋다. eclipse 메모리 설정방법 eclipse가 설치된 폴더에 eclipse.ini 이라는 파일이 존재한다. 이 파일의 용도는 eclipse 툴의 설정파일이라고 생각하면 된다. 힙사이즈를 늘려주려면 이 eclipse.ini 파일 끝에 옵션을 추가하면 된다. (-Xms204m -Xmx5096m) eclipse.ini (내이클립스 설정 파일) -startup plugins/org.eclipse.equino..
JVM 메모리 구조 참조 2018/06/29 - [프로그래밍 노트/JAVA] - [JAVA] JVM 메모리구조 2020/12/19 - [프로그래밍 노트/JAVA] - [JAVA] JVM 가상머신 메모리 구조 2021/01/22 - [프로그래밍 노트/JAVA] - [JAVA] 가비지 컬렉터(GarabageCollector,GC) 애플리케이션을 실행하다가, outOfMemoryError 가 발생하였다면 우리는 JVM의 메모리 설정을 다시해 줄 필요가 있다. java.lang.OutOfMemoryError : Java heap space Heap size의 부족으로 Java Object를 Heap에 할당하지 못한 경우 발생하는 에러 java.lang.OutOfMemoryError : PermGen space ..
JVM Memory 관련 이슈eclipse.ini의 설정이 JVM의 heap Size까지 조절해주는 줄 알았으나, eclipse가 사용할 수 있는 메모리의 한계치를 설정하는 거 였음Junit Test시 outOfMemeory Error가 났음.. 프로젝트 실행시 JVM 메모리 사이즈를 늘리기 위해서는 JVM에 파라미터를 전달해야하는 것을 알았음 (톰캣 argument 설정처럼) -> 어찌보면 당연한거임2019/03/19 - [그 외 ... (정리해야함)/꿀팁] - [JAVA] 이클립스(eclipse) 메모리 설정2019/03/19 - [그 외 ... (정리해야함)/꿀팁] - [JAVA] JVM 메모리 관련 설정(옵션)
형상화관리 Gitgit flow 정의회사 모듈을 어떻게 관리할 것인지 생각해보기
Comparable과 Comparator Comparable, Comparator 항상 헷갈리는 부분이다. 예전에 포스팅을 했지만 항상 까먹기 때문에,,, 책에 나온김에 다시 한번 정리할겸 포스팅을 한다. (https://cornswrold.tistory.com/23)TreeSet, TreeMap은 정렬을 위해 java.lang.Comparable 구현한 객체를 요구한다. 우리가 아는 Wrapper 객체는 모두 Comparable 인터페이스를 구현하고 있다.(Integer, Double, String ..)Comparable에는 compareTo() 메소드가 존재하고 적절하게 오버라이딩하여 정렬을 할 수 있게 한다. 리턴타입메소드설명 intcompareTo(T o)객체가 같으면 0 리턴 주어진 객체보다 ..
콜백 방식의 작업 완료 통보 자바스크립트를 조금해보면 콜백방식이 익숙할 것이다. 자바에서도 스레드 작업이 완료되면 특정 메소드를 자동 실행할 수 있는 콜백 방식을 이용할 수 있다.블로킹 방식 콜백방식ExecutorService는 콜백을 위한 기능을 제공하지 않는다. Runnable 클래스를 작성할 때 콜백 기능을 구현할 수 있는데 java.nio.channels.CompletionHandler를 이용해서 구현할 수 있다.(NIO 패키지 안에 존재, 비동기 통신에서 콜백 객체를 만들때 사용된다.) CompletionHandler callback = new CompletionHandler(){ @Override public void completed(V result, K attachment){} // 작업이..
블로킹 방식의 작업 완료 통보_2 작업 처리 결과를 외부 객체에 저장 스레드가 작업 처리를 완료하고 외부 Result 객체에 저장하면, 애플리케이션에서 Result 객체를 사용하여 작업을 진행할 수 있다. (대개 Result 객체는 공유객체가 되어, 두 개 이상의 스레드 작업을 취합할 목적으로 이용된다.)ExecutorService.submit(Runnable task, V result) 에서 V가 Result 타입이 된다. class Task implements Runnable{ Result result; Task(Result result){this.result = result;} @Override public void run(){ // 작업내용, result 저장 } } class Result{ //..
오늘의 삽질 일기.어제 쓴 내용과 비슷한 일을 하고 있었다.작업 내용은 내가 만든 프로젝트를 jar파일로 묶어서 실행하는 것이다.어제 글을 쓴거 처럼 생성된 jar는 pom.xml의 모든 dependency library를 포함하였으며, manifest도 만들어서 실행가능한 jar 상태이다. 문제는.. 리소스를 읽을 때 파일을 찾지 못한다는 것이다.project 내부에 있는 src/main/resources/font 폴더를 읽어야하는데, jar가 묶이기 전인 이클립스 프로젝트에서는 잘 실행이 되지만, jar파일이 패키징한 뒤 실행하면 font폴더를 찾지 못하는 것이다. (이것 또한 옛날에 겪은 내용인데, 적어놓지 않아서 까먹음..) 내용은 아래와 같다.getClass().getResource("font"..
블로킹 방식의 작업 완료 통보_1 ExecutorService의 submit() 메소드는 Runnable, Callable 작업을 스레드 풀의 작업 큐에 저장하고 즉시 Future 객체를 리턴한다.Future 객체는 작업이 완료될 때까지 기다렸다가(블로킹되었다가) 최종 결과를 얻는데 사용된다. (그래서 Future 객체를 지연 완료(pending completion)객체라고 한다.)Future의 get() 메소드를 호출하면 스레드가 작업을 완료할 때까지 블로킹되었다가 작업을 완료하면 처리 결과를 리턴한다. (블로킹을 사용하는 작업 완료 통보 방식) 주의할 점은 Future의 get() 메소드는 스레드가 작업이 완료될때까지 블로킹되므로 다른 코드를 실행할 수 없다는 것이다. 따라서 get() 메소드를 호출..
깡냉쓰
'2019/03 글 목록 (3 Page)