일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- JPA
- Amortized Analysis
- 페치조인
- 정렬
- commit
- DB
- n+1문제
- Flush
- 플러시
- ROLLBACK
- 값타입
- relational DB
- Spring Data JPA
- 고아객체
- 즉시로딩
- 분할상환분석
- MappedSuperclass
- relational database
- 영속성 컨텍스트
- 순수jpa
- DiscriminatorValue
- Embeddable
- fetch join
- 엔티티 매핑
- 지연로딩
- 관계형 데이터베이스
- Spring
- Algorithm
- 영속성전이
- DiscriminatorColumn
- Today
- Total
목록Programming/Java (2)
Jun's note

1. 배경 나는 코드 한줄을 적더라도 깊이있게 생각한 다음에 작성한다. 그러다 문득 전역변수, 정적변수, 지역변수는 어떻게 관리되는지 궁금해 찾아보았다. 자바도 하나의 가상머신을 통해 작동되기 때문에 메모리관리는 OS메모리관리와 비슷하다. 2. 정리 1) JVM 구조 크게 5가지 영역으로 나눌수있다. 메소드영역 전역변수가 저장된다. 스레드가 메소드영역에 있는 값을 공유할 수 있다. -> 여러 스레드가 동시에 하나의 공유변수의 값을 변경하면 문제가 발생하여 동기화 과정이 필요할 수 있다. -> 전역변수를 사용할때는 final 키워드를 되도록이면 사용하여 문제가 안생기도록 조심하자! 소멸시기: 프로그램이 종료할때 메소드영역에 있는 변수들이 소멸된다. 힙영역 동적으로 할당된 변수, 참조타입 (reference..

1. 배경 프로젝트에서 하던 중에 궁금증이 생겼다. 상수 변수를 내가 하나의 값을 지정해서 사용할지, 랜덤함수를 통해 생성된 임의값을 사용할지 고민했다. final Long userId1= 1L; vs final Long userId2= new Random().nextLong(); 이 둘의 차이가 궁금했다. 결론은 '이 둘은 메모리 측면에서 볼때 거의 비슷하다' 이다. 2. 이유 이는 Long이 참조타입이기때문이다. 참조타입은 heap에 실제값이 저장되고 저장된 메모리 주소값을 stack에 저장한다. 그래서 userId1의 실제값은 heap에서 생성된다. userId2는 new연산자를 통해 정의했기때문에 당연히 heap에서 생성된다. 즉, userId1과 userId2 두 변수 모두 실제값은 heap에 ..