2024/10/06 3

[java] Integer 캐싱

결론부터 말씀드리면 Integer 에 캐싱되는건 min 값이 -128 이고 max값은 127이다.     아래와 같이 테스트를 하였다. 결과는 다음과 같다.    127번 까진 각각 맞지만, 128번부터 인스턴스의 주소가 변경이 되어서 false가 나온다. 그에 따른 동시성 이슈때문에 찾아봤지만, 불변이기 때문에 동시성 이슈는 발생하지 않는다.  참조 : https://www.baeldung.com/java-compare-long-values

Java 2024.10.06

[java] 자바에서 스택과 힙의 차이

스택이란?- Stack 에서 heap 영역에 생성된 Object 타입의 데이터들의 참조를 위한 값들이 할당된다.- 원시 타입(primitive types)( byte, short, int, long, double, float, boolean, char)의 경우 실제 데이터 값이 할당된다.- 해당 method가 호출 되면 메모리에 할당되고 method가 종료되면 메모리가 해제된다.  Main 메서드 호출이 끝나고 Stack은 후입 선출 구조이기 때문에 아래와 같이 처리된다. 후입 선출 : 가장 최근에 요청된 것을 가장 먼저 처리, 가장 처음에 들어온 요청은 최후에 처리  스택 상태: 힙 이란? - Heap 영역에는 대체로 생명주기가 긴 데이터가 저장된다.- 모든 Object type(String, Arra..

Java 2024.10.06

[java]클래스가 상태값을 갖는다.

클래스에 상태값을 가지고 있는다는게 상황에 따라 고려해야된다. 먼저 상태를 가지고 있는 코드를 아래와 같다.해당 코드에서 상태를 확인하는건 speed 이다  상태를 가지는 것이 좋은 이유중에 가장 좋은건 객체의 고유한 상태를 가지고 있고 그 상태에 기반한 행동을 수행할 때 의미가 있습니다. 현실상태에서도 각각의 객체(사물)의 상태를 알수 있습니다, 예를 들어 컴퓨터의 상태, 의자의 상태 다양하게 객체들간의 상태값을 가지고 있습니다. 이 처럼 프로그래밍적으로도 객체의 상태값을 가지고 있으면 좋습니다. 하지만 대규모 트래픽에선 좋지 않은 방법이다. 즉 class에 대한 상태값을 가지고 있는게 안 좋다. 먼저 해당 상태로 테스트 코드를 작성하였다. 위에 대한 코드는 32개의 스레드가 1000번 실행 했을때 즉..

Java 2024.10.06