자바의 가비지 컬렉터
개론 대부분의 고수준 프로그래밍 언어들은 개발자가 메모리를 직접 해제하지 않는다. 별도의 프로그램이 동적으로 할당된 메모리의 여유분을 관리하는데 이를 가비지 컬렉터라고 한다. 그에 반해 c, c++과 같이 기계에 조금 더 가까운 언어들은 메모리 관리에 대한 책임이 전적으로 개발자에게 있다. 그렇다면 가비지 컬렉터는 어떤 방식으로 작동하는지 자바의...
개론 대부분의 고수준 프로그래밍 언어들은 개발자가 메모리를 직접 해제하지 않는다. 별도의 프로그램이 동적으로 할당된 메모리의 여유분을 관리하는데 이를 가비지 컬렉터라고 한다. 그에 반해 c, c++과 같이 기계에 조금 더 가까운 언어들은 메모리 관리에 대한 책임이 전적으로 개발자에게 있다. 그렇다면 가비지 컬렉터는 어떤 방식으로 작동하는지 자바의...
컴퓨터의 진법 우리는 컴퓨터가 2진수로 숫자를 처리한다고 많이 접했다. 어찌보면 당연한 선택이기도 하다. 메모리 셀, 플립플롭 등에 데이터를 저장하는 컴퓨터는 전하가 일정치를 넘어서 존재하느냐(1), 존재하지 않느냐(0) 외에 추가적인 선택지를 고안하기는 쉽지 않기 때문이다. 3진법으로 컴퓨터를 구성하는 개념과 시도 또한 있는 것으로 알고 ...
처리장치 중앙처리장치(CPU: Central Processing Unit) 각종 데이터 처리, 연산을 수행하는 처리장치와 연산을 제어하는 제어장치가 결합된 형태이다. 처리장치는 데이터를 처리하는 연산을 실행하며, 제어장치는 연산의 실행순서를 결정한다. 구성 산술논리연산장치(ALU) 산술, 논리, 비트 연산등의 연산을 수행한다 ALU는 독립적...
컴퓨터 명령어 OPERAND와 OP-CODE 컴퓨터 명령어의 기본적인 구성요소는 오퍼레이션 코드(Op-code)와 오퍼랜드(Operand)로 구분된다. Op-Code는 CPU에서 실행될 연산을 지정하는 부분이며, 오퍼랜드는 연산을 실행하는 데 필요한 데이터 혹은 주소 값을 가지고 있다. 명령어의 분류 컴퓨터 명령어 형식은 크게 2가지로 다음...
클라우드 컴퓨팅 온프레미스 정보 서비스 제공에 요구되는 데이터 센터를 자체적으로 보유하고 운용하는 방식이다. 클라우드 컴퓨팅 기술이 나오기 전까지 사용되던 일반적인 인프라 구축 방식이며, 개인 혹은 기업이 서비스를 제공하기 위해 구축한 서버를 말한다. 시스템 구축 단계 요구 기능 수집 IT 리소스 요구량 추정 및 추가...
디지털 논리회로 디지털 논리회로는 크게 2가지로 나뉜다. 조합논리회로, 순서놀리회로로 구분되는데 구별의 기준은 기억소자의 유무이다. 조합논리회로 현재의 입력에 의해서만 출력이 결정되는 논리회로이다. 종류로는 덧셈회로인 가산기, 뺄셈회로인 감산기 등이 존재한다. 반가산기 2진수의 덧셈을 수행하는 회로이며, 두 비트의 덧셈을 수행한다. ...
스프링 부트의 자바 빈은 어떻게 생성될까? 스프링 컨테이너에 등록되는 빈은 어떤 방식으로 생성되는지 궁금해졌다. 그래서 한 번 인텔리제이로 코드를 따라가봤다. 아마 틀렸을 수도 있다… 싱글톤이란? 일단 스프링은 기본적으로 싱글톤으로 빈을 생성한다. 그렇다면 싱글톤 패턴이 무엇인지 잠시 알아보자. 생성자가 여러 차례 호출되더라도 실제로 생...
메모리 기근 운영중인 이미지 관련 웹 서비스가 하나 있는데 서버 메모리가 1GB라 굉장히 빠듯하다. 자바 스프링 기반으로 작동하고 있는데, 메모리를 더 효과적으로 사용할 방법이 없을까 싶어서 조사하던 중 스프링 네이티브를 발견하게 되었다. 스프링 네이티브란? GraalVM을 활용했으며, 스프링 어플리케이션을 네이티브 이미지로 컴파일하여 기존 J...
타이핑 시 발생하는 일들 키보드를 타이핑 하는 순간 컴퓨터에서는 어떤 일이 일어날까? 키를 누르는 순간부터 모니터에 표시되기 까지의 과정이 궁금해서 알아보았다. 키캡을 누른 순간 먼저 특정 키를 누르면 키보드 아래의 회로에 전류가 흐르고, 마이크로 컨트롤러가 신호를 인식한다. 이때 컨트롤러는 키가 눌리거나 떨어질 때 마다 고유 코드를 전송하...
API 요청과 재시도 API 요청에 실패하면 어떻게 대응하는 것이 좋을까? 될때까지 쏘기 한 10분 있다가 다시 요청하기 그냥 멍때리기 전부 다 좋은 방법은 아닌 것 같다. 1번 방법 사용 시 API를 제공하는 서버에 지속적으로 부하를 걸어서 장애 복구에 차질이 생기게 할 수 있다. 또한 내 서버도 굉장히 많은 리소스를 낭비하게 된...