본문 바로가기

자바

(25)
[병렬프로그래밍] 스레드 이해하기 스레드의 생명주기 스레드의 생명주기는 프로세스의 생명주기와 유사합니다. java에서 프로세스 생명주기를 나타내는 그림입니다. 프로그램이 실행되면 메인부터 시작하여 하나하나씩 개발자가 짠 함수들이 순차적으로 실행됩니다. 이때 a(), b()라는 함수가 있는데, 동시에 실행하고 싶을때 쓰레드를 이용하게 됩니다. 각 함수별로 해당 함수를 실행하는 스레드를 생성합니다. 자바에서 실행되는 모든 엔티티는 객체입니다. 쓰레드 역시 마찬가지로 객체입니다. 쓰레드를 실행하는 메소드(start()) 실행하면 쓰레드가 동작하면서 CPU가 점유된 상태가 됩니다. 스레드 이후 커리큘럼은 파일 IO에 대한 설명이 이루어지는데, 파일 IO 역시 네트워크 프로그래밍과 연결되어 있습니다. 왜냐하면 네트워크 프로그래밍은 결국 네트워크 ..
[병렬프로그래밍] 자바 병렬 프로그래밍 소개 자바에서 제공하는 저수준의 도구와 설계 수준의 정책 간 차이점을 극복할 수 있도록 병렬 프로그램을 작성하는데 필요한 간결한 규칙이 필요합니다. 자바 메모리 모델의 깊숙한 부분까지 이해하면 병렬 프로그램 작성을 잘할수 있는건 맞지만 그런 상세한 내용을 모르는 상태에서도 올바르게 동작하는 병렬 프로그램을 작성할수 있도록 도와주려는 의도가 있습니다. 자바 병렬 프로그래밍과 관련하여 간결한 규칙을 잘 따르면 올바르면서도 유지보수도 간편한 병렬 프로그램을 작성 가능합니다. 동기화에 대한 기본 지식 필요합니다.자바 동기화 기능에 대한 입문서 The Java Programming Language 스레드 관련 부분.Concurrent Programming in Java 등을 참고. 기본 원리 / 병렬 프로그램 구조 잡..
[자바성능] 프로그램 속도 측정 성능이 느리다고 할 때 가장 먼저 해야 하는 작업은 병목 지점을 파악하는 것입니다. 자바 기반의 시스템에 대하여 응답 속도나 각종 데이터를 측정하는 프로그램은 많이 있습니다. 애플리케이션의 속도에 문제가 있을 때 분석하기 위한 툴로는 프로파일링 툴이나 APM(Application Performance Monitoring 혹은 Management) 툴 등이 있습니다. 프로파일링 툴(프로파일러)이란? 프로파일링 툴- 소스 레벨의 분석을 위한 툴입니다.- 애플리케이션의 세부 응답 시간까지 분석할 수 있습니다.- 메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석할 수 있습니다.- 가격이 APM 툴에 비해서 저렴합니다.- 보통 사용자수 기반으로 가격이 정해집니다.- 자바 기반의 클라이언트 프로그램 분석을..
[자바] VO에서 Serializable을 구현하는 이유 Serializable 인터페이스를 구현한다고 해서 반드시 구현해야하는 메소드가 있는 것도 아니고, 변수가 존재하는 것도 아닙니다. 이 인터페이스를 구현하면 객체를 직렬화할 수가 있습니다. 다시 말해 서버 사이의 데이터 전송이 가능해집니다. 원격 서버에 데이터를 전송하거나, 파일로 객체를 저장할 경우에는 이 인터페이스를 구현해야 합니다. 1년차때는 이유를 몰라서 직렬화 인터페이스를 구현하지 않았는데, 3년차때 실제 서버간 객체 전송에서 문제가 생기는 것을 경험하고 그제서야 직렬화 인터페이스를 구현해야하는 이유를 정확히 알게 되었던것 같습니다. 물론 저도 직렬화에 대해 이리저리 찾아봐도 실제로 와닿지가 않았습니다만, 역시 사람은 지식도 지식이지만 몸으로 부딪히며 깨닫는 과정도 필요한것 같습니다.
[성능튜닝] 가비지 컬렉터(GC) 이해하기 유닉스 서버든 윈도우 기반 서버든 풀(Full) GC를 수행하는 시점에는 해당 WAS의 컨테이너에서 서비스가 처리되지 않는다는 단점이 있습니다. 다시 이야기하면 GC를 많이하면할수록 응답 시간에 많은 영향을 끼친다는 것입니다. 그러므로 자신이 만든 자바 프로그램의 성능을 생각하는 자바 엔지니어라면, GC가 어떻게 처리되는지 기본 지식은 갖고 있어야 합니다. GC가 언제 발생하는지 알기 위해서는 GC가 어떻게 수행되는지 원리를 알아야 합니다.http://java.sun.com/javase/technologies/hotspot/gc/index.jsphttp://d2.naver.com/helloworld/1329 GC(가비지 콜렉터)란?자바에서는 메모리를 GC라는 알고리즘을 통하여 관리(automatic me..