ILoveCoffee, ILoveJava 29

Warming up_01

01_프로그램이란 무엇입니까? 컴퓨터에서 실행되는 순서를 차례대로 나타낸 것 02_프로그램의 내부에는 어떤 것들이 포함되어 있습니까? 프로그램은 명령어와 데이터의 집합체로 되어 있습니다. 03_기계어란 무엇입니까? 컴퓨터가 해석할 수 있는 전기 신호(1 또는 0, 즉 2진수)로 된 프로그램 04_실행중인 프로그램은 어디에 저장되어 있습니까? 메인메모리 05_ 메모리 어드레스란 무엇입니까? 메모리의 명령이나 데이터가 보존되는 장소를 정수로 나타낸 값 06_컴퓨터 구성요소 중에서 프로그램을 해석 및 실행하는 장치는 무엇입니까? CPU

힙(heap) 메모리

heap memory는 컴퓨터 사전을 찾아보면 이렇게 정의되어 있습니다. " 프로그램의 실행 도중에 요구되는 기억 장소를 할당하기 위하여 운영 체제에 예약되어 있는 기억장소 영역, 프로그램에서 실행 도중 자료를 저장하기 위하여 기억장소를 요청하게 되면 운영 체제에서는 힙에 존재하는 기억장소를 프로그램에 할당한다. 그리고 프로그램에서 기억 장치를 더 이상 필요로 하지 않는 경우에는 앞에서 할당 받았던 기억 장소를 운영체제에 반납하게 되는데, 이때 운영체제에서는 반납된 기억 장소를 다시 힙에 연결하게 된다. 힙에 대한 기억 장소는 포인터를 통해 동적으로 할당되거나 반환이 되는데 연결 리스트, 트리, 그래프 등과 같이 동적인 특성을 가지고 있는 자료구조에서 널리 사용된다. " 길다...ㅡㅡ;; 한마디로 프로그..

변수(전역, 지역, 매개, static) 저장 위치

이번에 알아볼 내용은 변수 입니다. '변수' 사실 프로그래밍 하면서 많이 선언하고 사용하지만 이 변수가 어디에 어떻게 저장되고 불려 오는지 생각해보신 분은 사실 그리 많지 않을 것 입니다. 하지만 알고 나면 아하 그래서 이렇게 사용할 수 있구나 라든가 고급스런 프로그래밍에서 예를 들면 재귀호출과 같은 프로그램밍시에 어떻게 작동을 해서 결과를 넘겨주는지를 이해할 수 있게 될 것입니다. 상당히 추상적인 개념인지라 약간의 상상력을 요할 수 있는 이론입니다. 제가 씨(C/C++)을 공부하던 시기에 봤던 문서를 좀더 이해하기 쉽게 풀어서 나중에 까먹거나 했을 경우 보고 회상하기위해 작성한 글이기 때문에 다소 주관적인 스타일로 작성될 수도 있겠습니다. 그럼 본론으로 들어가 보겠습니다. 크게 보면 프로그램은 code..

Windows x86 (32bit)에서 사용자 메모리 강제적 할당

일반적으로 Windows 환경에서 2000, xp, 2003 32비트 에디션에서는 물리적인 메모리를 4G까지 사용할 수 있습니다. 그렇다면 자바 힙 메모리도 OS나 다른 어플리케이션이 사용할 수 있는 메모리를 제외한 메모리를 사용할 수 있어야 하는데 실제로는 그렇지 못합니다. 이유는 Windows에서 Application에서 사용할 메모리는 커널 2G, 사용자 2G 로 되어 있기 때문입니다. 즉 우리가 사용하는 자바 힙 메모리도 제한이 생기는거죠. 그렇다면 힙메모리를 늘리는 방법은 커널, 사용자 메모리를 조정하는 것입니다. 윈도우에는 부팅 정보를 담고 있는 파일 c:\boot.ini 가 있는데 여기에 있는 옵션에 다음과 같이 추가하는 것입니다. [boot loader] timeout=30 default=..

간단한 코딩으로 곱셈 나눗셈 하기

요즘 c/c++강좌가 올라오면서 파코즈에도 프로그램 열풍이 불고 있는 듯합니다..^^ 저도 같이 공부하고 서로 정보 공유하자는 차원에서 중급코딩시 유용한 팁하나 소개할까합니다. 매우 간단한건데요. c/c++ 연산자들 중에는 비트연산자() 가 있습니다. 비트연산자란 간단히 말해 0과1 2진수로 표현되어있는 기계어를 비트연산자를 이용해서 계산하는 방법으로 컴퓨터가 이해하기 쉬운 비트를 계산해 속도가 빠르다는 장점을 가지고 있습니다. 잡소리 그만하고 본론으로 바로 설명들어가자면.. a 라는 변수의 2배수를 구하고 싶다면.. a = a*2; 이런 코딩이 나오겠지요 이 식을 비트연산자로 바꾸면 이렇게 됩니다. a = a

코드의 웃음을 빼앗아가는 리펑토링(Refuctoring)

우선 아래글은 마소 잡지의 컬럼에 올라왔던 글을 인용한것이라는 것을 우선 밝힌다. 내가 생각하는 좋은 코딩은 과연 다른사람이 내가 짜놓은 소스를 보고 이해가 쉽게 되는가 이다. 소스라는 것이 스파게티의 면처럼 복잡할 수 밖에 없겠지만 그렇다고 엉킨 면을 더욱 엉켜놓을 필요는 없지 않은가.... 특히 프레임웍까지 사용하면서 이런 리펑토링 코드까지 감당해야 한다면.. 간단한 커스터 마이징을 위해 소스의 분석을 하다가 하루가 다지나가고 결국 야근을 야기시키는 개발자들 사이에선 없어져야할 부분이 아닌가싶다. 밑의 고맨의 6가지 리펑토링을 가지고 구체적인 예를 들어 설명하고 있다. 사실 6가지 리펑토링 중 필자가 가장 와닿는 리펑토링은 ‘보물찾기(Treasure Hunt)’ 이다. 사실 이런 코딩 기법을 기교 마..

jps - Java 가상 머신 프로세스 스테이터스 툴

jps - Java 가상 머신 프로세스 스테이터스 툴 개요 설명 옵션 호스트 식별자 출력 형식 례 관련 항목 형식 jps [ options ] [ hostid ] options 커멘드행 옵션 hostid 프로세스 리포트를 생성하는 호스트의호스트 식별자 . hostid 에는, 통신 프로토콜, 포토 번호, 구현에 고유한 다른 데이터를 지정한 옵션 컴퍼넌트를 포함할 수가 있습니다. 설명 jps 툴은, 타겟 시스템상에서 계측 된 HotSpot Java 가상 머신 (JVM)을 일람표 가리킵니다. 이 툴로 표시할 수 있는 리포트 정보는, 액세스권을 가진 JVM 에 관한 것으로 한정됩니다. hostid 를 지정하지 않고 jps 를 실행했을 경우, 로컬 호스트로 계측 된 JVM 가 검색됩니다. hostid 를 지정해 ..

JVM STAT 보는법

vmstat은 썬 사이트에서 공개되고 있는 메모리 감시 출이다. 현재 버전 3.0으로 JDK5.0/1.4.2/1.4.1까지 대응하고 있다. http://java.sun.com/performance/jvmstat 오라클이 java를 가져가면서 위 주소는 삭제되었음.(2011.06.29) http://www.oracle.com/technetwork/java/jvmstat-142257.html (이 주소에서 다운받을수있다.) 인스톨은 위의 사이트에서 jvmstat-3_0.zip을 다운로드 후 폴더에 압축을 푸는 것만으로 OK. 윈도우즈의 경우 bat/visualgc.cmd를 리눅스의 경우 bin/visualgc를 이용한다. % jps 21891 Java2Demo.jar 1362 Jps.jar % visualg..

JVM GC와 메모리 튜닝

업데이트 2016-01-22 네이x에서 잘 정리된 글이있어 링크 달아놓음. Java GC 관련 설명글http://d2.naver.com/helloworld/37111 Java GC 모니터링 어플 소개글http://d2.naver.com/helloworld/6043 JVM GC와 메모리 튜닝 자바스터디 네트워크 [www.javastudy.co.kr] 조대협 [bcho_N_O_SPAM@j2eestudy.co.kr] 모든 Java Application은 JVM(Java Virtual Machine)위에서 동작한다. 이 JVM이 동작하는데 있어서, 메모리의 구조와 특히 GC는 Application의 응답시간과 성능에 밀접한 관계를 미친다. 이번 강좌에서는 JVM 의 메모리 구조와 GC 알고리즘 (JDK 1.4...