개발

개발/Java

자바에서 모니터가 동작하는 원리 (with synchronized)

모니터란 모니터란 뮤텍스나 세마포어보다 더 고수준의 동기화 기법이다. 전공 수업에서는 세마포어를 편리하게 사용하기 위해 인터페이스를 제공한 것이 모니터라고 배웠었다. 부족하지만 수업을 듣고 정리해 놓은 글이 있다. https://devdebin.tistory.com/16#%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4-1 임계 구역과 임계 구역 해결 방법 2021. 10. 2. 00:51 2022. 6. 22. 15:30 복습을 위한 수정 시작 프로세스는 독립적으로 작업을 할 수도 있고 공유된 자원을 가지고 공동 작업을 할 수도 있다고 이전 장에서 언급했다. 이번에는 본격적으로 devdebin.tistory.com 자바에서의 모니터 모든 자바 객체는 모니터를 가진다. 여러 스레드가 객체..

개발/Java

Java Thread (version 2)

Java Thread 자바 스레드는 JVM에서 User Thread를 생성할 때 시스템 콜을 통해서 커널에서 생성된 커널 스레드와 1:1로 매핑이 되어 최종적으로 커널에서 관리된다. JVM에서 스레드를 생성할 때마다 커널에서 자바 스레드와 대응하는 커널 스레드를 생성한다. 자바에서는 플랫폼 스레드로 정의되어 있다. 즉 OS 플랫폼에 따라 JVM이 사용자 스레드를 매핑하게 된다. 스레드 생성은 Thread 클래스를 상속하는 방법과 Runnable 인터페이스(함수형 인터페이스)를 구현하는 방법이 있다. Thread 실행 및 종료 자바 스레드는 OS 스케줄러에 의해 실행 순서가 결정되며 스레드 실행 시점을 JVM에서 제어할 수 없다. 새로운 스레드는 현재 스레드와 독립적으로 실행되고 최대 한번 시작할 수 있고..

개발/Java

equals()와 hashCode()

자바에서 모든 클래스는 Object 클래스를 부모 클래스로 가진다. Object 클래스에는 equals()와 hashCode()가 있다. 오늘은 이 둘에 대해 정리해보려고 한다. 동등성과 동일성 동일성은 두 객체가 동일한 인스턴스임을 의미하며 == 연산자로 확인이 가능하다. 동등이란 두 객체가 동일한 상태나 값을 갖는다는 것을 의미하며, equals 메서드로 확인할 수 있다. 동일성은 동등하다고 말할 수 있지만, 동등하다고해서 동일성을 가진다고 말할 수는 없다. equals() public boolean equals(Object obj) { return (this == obj); } equals()는 객체가 동등한지(논리적 동치성, 동등성)를 검사한다. 기본적으로 Object 클래스의 equals 메서드..

개발/Java

Java MetaSpace

오늘은 Java 8 버전에서 등장한 MetaSpace에 대해 알아보자. Permanent Generation 자바 7버전까지는 Permanent Generation이라는 영역이 존재했다. 줄여서 PermGen라고 부른다. PermGen은 로드되는 클래스, 메서드 등에 관한 정보 등 메타 데이터(리플렉션)를 저장한다. 모든 static 메서드, static 변수를 저장한다. Java 7 버전까지는 String Pool도 PermGen의 일부 바이트 코드, 이름, JIT 정보도 가지고 있다. 이 영역은 제한된 메모리가 큰 단점이다. 제한 된 메모리로 인해 Out Of Memory(OOM) 문제가 발생할 수 있다. Permanent Generation은 Heap 영역인가? 위 사진만보면 PermGen은 Hea..

Debin
'개발' 카테고리의 글 목록