Java 4

JVM 자동 메모리 관리

런타임 데이터 영역1. 프로그램 카운터PC : 현재 실행 중인 스레드의 '바이트코드 줄 번호 표시기'자바 가상 머신에서의 멀티 스레딩은 CPU 코어를 여러 스레드가 교대로 사용하는 방식으로 구현되기 때문에 특정 시각에 각 코어는 한 스레드의 명령어만 실행하게 된다.스레드 전환 후 복원하려면 스레드 각각에 고유한 프로그램 카운터가 필요하다.각 스레드의 카운터는 서로 영향을 주지 않는 독립된 영역에 저장된다. 이 영역을 스레드 프라이빗 메모리라고 한다.스레드가 네이티브 메서드를 실행 중일 때 프로그램 카운터 값은 Undefined이다. 2. 자바 가상 머신 스택자바 가상 머신 스택도 '스레드 프라이빗'하다.각 메서드가 호출될 때마다 자바 가상 머신은 스택 프레임을 만들어 지역 변수 테이블, 피연산자 스택, ..

Java 2025.12.11

브라이언 게츠의 자바 병렬 프로그래밍 1부 기본 원리 정리

1. 스레드 안전성스레드 안전성이란?여러 스레드가 클래스에 접근할 때, 실행 환경이 해당 스레드들의 실행을 어떻게 스케줄하든 어디에 끼워 넣든, 호출하는 쪽에서 추가적인 동기화나 다른 조율 없이도 정확하게 동작하면 해당 클래스는 스레드 안전하다고 말한다. 스레드 안전한 클래스는 클라이언트 쪽에서 별도로 동기화할 필요가 없도록 동기화 기능도 캡슐화한다.상태 없는 객체는 항상 스레드 안전하다.단일 연산증감 연산자는 단일 연산이 아니다변수 값을 가져온다.값에 1을 더한다.변수에 값을 저장한다.늦은 초기화 시 경쟁 조건한 스레드에서 생성자를 통해 객체를 생성할 때, 다른 스레드에서 인스턴스에 접근하면 null일지 객체가 생성되었을지 알 수 없다. 다른 스레드가 읽기 전에 복합 동작을 모두 수행할 경우, 단일 연..

WriteBytes의 한글 깨짐 해결 방법

소켓 프로그래밍을 하던 중, 브라우저에 한글이 깨져 나왔다. 해결 방법1. 응답 헤더에 인코딩 방식 정의outToClient.writeBytes("Content-Type: text/html; charset=UTF-8\r\n");   2. HTML 파일에 인코딩 방식 정의  3. IDE 기본 인코딩 방식을 UTF-8로 변경  4.프로젝트 SDK를 17버전으로 다운그레이드(18버전 이상부터 한글 깨짐 오류가 있다는 글을 확인함)  5. getBytes(StandardCharsets.UTF_8)로 명시적 정의outToClient.write(outputdata.toString().getBytes(StandardCharsets.UTF_8)); 5번까지 해서 한글이 깨지지 않고, 나왔다.찾아보니 writeBytes..

Java 2024.10.19

자바 예외 이해

예외 계층Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다.Throwable : 최상위 예외이다. 하위에 Exception과 Error가 있다.Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안 된다.상위 예외를 catch로 잡으면그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 Throwable 예외도 잡으면 안 되는데, 앞서 이야기한 Error 예외도 함께 잡을 수 있기 때문이다. 애플리케이션 로직은 이런 이유로 Exception부터 필요한 예외로 생각하고 잡으면 된다.   참고로 Error도 언체크 예외다.  Exep..

Java 2024.10.06