본문 바로가기
카테고리 없음

Java 메모리 구조, Github 협업 프로세스

by 수수남매 2023. 10. 16.
  • 오늘 공부한 것
    - JAVA 문법 기초
    - github 협업

  • 고민했던 문제
    - Wrapper class로 박싱된 기본형 변수의 값은 어디에 저장되는가?
      -> 인스턴스 생성과 마찬가지이므로 참조형 변수처럼 heap에 저장
    https://velog.io/@kimdy0915/기본형primitive-vs.-래퍼-클래스wrapper-class
    - sc.nextInt() 다음에 오는 sc.nextLine()이 공백으로 처리됨
      -> 사용자가 입력한 Enter를 인식, sc.nextLine() 추가 또는 Integer.parseInt(sc.nextLine())으로 변경

  • 알게 된 것
    - Java에서 참조형 변수를 저장하는 방식
      -> 원본 값은 Heap영역에, Heap영역의 주소를 Stack영역에 저장 (기본형 변수는 원본 값을 Stack영역에 저장)
    - Java 메모리 구조
      -> heap : new를 통해 생성된 모든 인스턴스를 할당, Garbage Collector가 메모리를 관리함, 동적 할당
      -> static : 전역변수와 static이 붙은 클래스 메서드, import된 패키지를 할당, 프로그램의 시작부터 종료까지 유지
      -> stack : 지역변수와 일반 메서드를 할당, 메서드 종료시 메모리에서 해제됨, 정적 할당, LIFO구조
    https://www.devkuma.com/docs/jvm/memory-structure/
    - Github fork, branch, PR의 개념
      -> 협업할 Repo를 fork한 경우 local repo는 fork한 내 원격 repo와 연결
      -> 원본 원격 repo는 일반적으로 upstream명으로 등록 
    - git clone/fetch/pull의 차이점
      -> clone : git init + git remote <> + git pull, 원격 repo를 로컬로 복사할 때 사용
      -> fetch : 원격 repo의 업데이트 사항 확인, 내 작업내역은 merge하고 싶지 않을 때
      -> pull : fetch + merge