반응형

Language/Java 6

[Java] syncronized: multi-thread 환경에서 동기화 문제를 해결하는 키워드

자바에서 멀티 스레드를 잘 사용하면 좋은 성능을 내는 프로그램을 개발할 수 있지만, 스레드 간 동기화 문제를 필수적으로 해결해야 합니다. 예를 들어 스레드 간 공유 자원으로 사용하고 있는 데이터가 있을 경우, 여러 개의 스레드가 하나의 데이터에 접근할 경우 신뢰성을 보장할 수 없게 됩니다. 이러한 스레드 동기화 문제는 자바 heap영역에서 발생하게 됩니다. 왜냐하면 자바 스레드는 스레드 안에 스택 영역을 포함하고 있기 때문에 스택 영역의 경우에는 Thread-Safe 하게 되지만 heap영역 같은 경우에는 공유하는 메모리 영역이기 때문에 Thread 간에 safe하지 못하게 됩니다. [OS] Synchronization 동기화란? 1. 동기화란? 동기화란 컴퓨터 공학의 영역 뿐만 아니라 클라우드 저장소와..

Language/Java 2020.06.22

[Java] JVM의 Runtime Area

JVM (Java virtual machine)에 관하여 살펴보겠다. Heap 영역 자바 객체와 배열이 생성되는 영역이다. 힙 영역에 생성된 객체와 배열은 JVM ㅅ택 영역의 변수나 다른 객체의 필드에서 참조한다. 만약 참조 값이 없다면 쓰레기로 취급하고 JVM은 GC를 이용하여 객체를 힙 영역에서 제거한다. Stack 영역 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당된다. 추가적으로 스레드를 생성하지 않았다면 main 스레드 하나만 존재하므로 JVM 스택 역시 하나이다. JVM 스택은 메서드를 호출할 때마다 프레임(Frame)을 추가(push)하고 메서드가 종료되면 해당 프레임을 제거(pop)하는 동작을 수행한다. 예외 발생 시 printStackTrace()는 메서드를 보여주는 Stack ..

Language/Java 2020.01.13

[Java] Lombok 사용하기

Lombok이란? java는 대부분의 변수들을 class안에 private으로 저장한다. 때문에, 해당 변수에 접근하기 위해서는 아래와 같이 getter setter와 같은 함수들을 정의해 주어야 한다. 이러한 이유로 큰 기능이 없는 작은 클래스임에도 코드가 길어지는 단점이 생긴다. 그나마 IDE의 자동생성 기능을 사용하면 수고롭게 getter, setter 함수를 작성할 필요는 사라지지만, 여전히 코드의 길이는 줄어들지 않고, 만약 변수명이 변경된다면 함수 역시 모두 고쳐주어야 하는 번거로움이 발생한다. lombok은 이러한 에러사항을 해결해주는 자바 라이브러리로써, @Getter, @Setter와 같은 annotation을 붙여주는 것만으로 컴파일 시 자동으로 getter, setter함수를 만들어준..

Language/Java 2019.11.15

[Java] JVM 가상머신과 Java Language의 이식성, 호환성 관계

흔히 우리나라는 java 공화국이라고 불릴 정도로 java가 널리 사용되고 있다. 최근에 와서는 kotlin과 javascript와 같은 언어에 어느 정도 점유율을 빼앗겼지만, 여전히 java는 가장 널리 사용되고 있는 언어라는 것에 있어서는 이견이 없다. 이에 관한 이유에는 여러가지가 있지만, 그중 가장 대표적인 이유는 Java의 호환성 때문이다. Java의 호환성을 이해하기 위해서는 먼저, 조금의 운영체제에 관한 지식이 요구된다. 이 포스팅에서는 이러한 부분을 간략히 예를 들어서 설명하도록 하겠다. Hardware OS Application 예를들어, A + B라고 하는 명령을 Intel cpu에서 machine code로 0101, 모토롤라 cpu에서는 0000이라고 하겠다. Assembly lan..

Language/Java 2019.11.10

[Java] Garbage Collector란?

GC란? Machine Code에서 Assembly Language로 넘어오는 시점부터 프로그래머들은 기호를 이용한 프로그래밍을 하기 시작했다. 그리고 그러한 기호식 프로그래밍은 점차 language가 발전함에 따라 지금에 와서는 변수에 데이터 값을 초기화하고 그 값을 활용해 프로그램을 만들어낸다. 이러한 변수에 저장된 값들은 메모리 상의 Heap이라고 불리는 특정 영역에 저장된다. 컴퓨터의 메모리가 무한하다면, 잔여량을 걱정하지 않고 마음껏 메모리를 사용해도 되겠지만 안타깝게도 우리의 메모리는 유한하기 때문에, 메모리에 사용하지 않는 값들을 지워주지 않는다면 Memory Leak(메모리 누수)가 발생하게 된다. 그리고 이렇게 세어나간 메모리들이 쌓여서 우리의 메모리를 가득채우게 되면 컴퓨터는 작동을 멈..

Language/Java 2019.11.10

[Java] JSP와 Servlet이란?

JSP jsp의 개념 JSP(Java Server Page)는 Java를 이용하여 동적인 웹 페이지를 만들기 위해 Sun Microsystems사가 개발한 기술이다. 사용자의 요청에 맞는 결과를 동적으로 표시해주는 웹 페이지를 웹 서버 측에서 사용자에게 전송해 주기 위해서는 요청의 처리결과에 따라서 자동으로 응답을 생성할 수 있는 역할을 한다. html 코드 안에 java코드가 삽입된 형태이다. 〈%...%>,, 와 같은 형태의 코드가 자바 코드이다. JSP가 html과 java코드를 동시에 사용할 수 있는 이유 JSP 파일이면 웹 컨테이너는 먼저 JSP 파일을 파싱(Pairsmg)하여 자바 코드로 변환한다. 파싱이란 코드를 해석해서 그에 맞는 변환 코드로 바꾸는 작업이다. 각각의 패그를 자동으로 감지하..

Language/Java 2019.10.13
반응형