전체 글

전체 글

    JIT 컴파일러는 무엇인가요?

    📝느낀 점 JDK? JVM? 같은 용어들은 많이 들어 봤지만, JIT? 는 처음 들어 봤기에 이렇게 정리 해볼까 한다. JVM을 공부하며, Execution Engine 에 알게 되었으며, 실행엔진은 무슨일을 할까? 내부에서는 어떤 일들이 일어날까 궁금하였기에 정리해볼까 한다. 일단 내용이 짧다. 이부분에 대해서는 점차 해당 글들에 대해 내용을 더 붙여가며 좋은 글을 작성할 수 있도록 하겠다. 결국 JIT는 컴파일러에 의해 바이트 코드로 되었던 것을 컴퓨터가 알아 들을수 있는 언어인 기계어(010101)로 변환해주는 작업을 해준다고 생각하면 될것 같다. javac 명령을 사용해서 컴파일 한 바이트 코드를 컴퓨터가 알아먹을 수 있도록 하려면 다시 변환 작업이 필요하다. 이 변환 작업을 JIT 컴파일러가 한..

    배열의 선언과 메모리 할당

    📝느낀 점 배열은 코딩테스트 할때만 사용했었다, 그리고 코딩테스트 풀기 위한 용도로만 알고 있었다. jvm을 공부하면서 배열 또한 메모리에서 어떻게 관리되고, 저장되는지 궁금하였기에 이렇게 정리했던 결과를 작성해볼까 한다. 내용이 다소 부족할수도 있지만, 점점 살을 붙여가며, 좀 더 좋은 글을 만들수 있도록 하겠다. 중요한 것은, 배열 또한 불변이라는 것이고 연속적인 자료구조 라는 것이다. 또한 객체 생성처럼 배열 또한 힙 영역에서 생성되어 jvm 스택영역에 주소값을 가지게 된다는 것입니다. 또한 배열의 첫번째 값을 대표로 주소값을 반환 해준다는 것 배열이란? 배열은 같은 타입의 데이터를 연속적으로 저장한 자료구조입니다. 배열의 특징? '정적'이라는 점과 '연속적'이라는 것이다. 처음 배열의 크기가 정해..

    static primitive, static reference 저장 / static 메서드와 일반 메서드의 차이점

    📝느낀 점 JVM을 공부하면서 static primitive 같은 경우는 메타스페이스 영역에 저장 되는 것을 알고 있었으나, static reference 같은 경우는 어디에 저장 되는건지 궁금하였다! "static이기에 분명 메타스페이스 영역에 저장 될거야" 라고 생각했지만, "참조형인데 객체 생성은 해야 될거 아냐?" 뭐지?? 싶은 생각에 혼란스러웠던 기억에 이렇게 정리하게 되었다. 생각해보면 내가 jvm에 대해 지식이 아예, 없었다면 이해를 하고 싶어도 이해를 할수 없었지 않았나 싶다. 이래서 다들 깊게 공부하라고 하는 것이구나 싶은 생각이 든다. 어떤 하나를 깊이 공부하고 나면 분명 다른거와 연관되어 생각이 나게되고 "아, 그래서 이렇게 되는거구나" 하고 알게 되는 것 같다. 중요한 것은 stat..

    exception VS error 차이가 무엇인가요?

    📝느낀 점 나는 백엔드 개발자를 한다면 정말 중요하게 생각드는 부분이라고 생각든다. 하지만, 매번 까먹고 다시 공부하고 하면서 문제의 심각성을 알게 되었다. "왜, 매번 까먹지?" 내가 생각한 결론은 한번도 예외처리에 대해 글로만 공부하고 직접 사용해보지 않아서 인것 같다. 물론, 사람들마다 다르겠지만, 나란 사람은 직접 코드로 작성해보고 "이건 이렇게 되는구나 실행해보고" 하면서 머리에 자리 잡혀 또 이렇게 부족한 나의 포스팅들이지만 계속 수정해 가며 살을 붙일 수 있는 블로그인이 될수 있도록 하겠다. 체크 예외 같은 경우, 개발자가 실수로 예외를 까먹지 않도록 컴파일 시점에 문제를 잡아주는 안전 장치라고 생각 할수 있다. 언체크 예외 같은 경우 컴파일러가 체크 하지 않는 언체크 예외이다. "체크를 왜..

    불변 객체나 final을 굳이 사용해야 하는 이유가 있나요?

    📝느낀 점 final 키워드를 볼때마다 항상 이거 왜 쓰는거지? 의문점이 있었다. 즉, "결국 내가 수정 안하면 되는거 아냐?" "그러면 값 수정 될일 없을거 아냐?" 하는 생각을 항상 가지고 있었다. 하지만 역시 사람은 아는 만큼 보인다고 내가 아는게 없으니 저정도의 생각만 했던 것이 아닐까 생각든다. 그리하여 final 키워드를 사용함으로써 클래스들끼리의 상속 못하게 할수도 있다는 장점이 있고, 메소드 오버라이딩을 못하게 만들수도 있습니다. 또한 값이 변경되면 안되는 데이터를 누군가(협업)의 실수로 인해 변경되는 것을 미리 방지 할수 있습니다. final 키워드를 사용한다면? final 키워드를 사용할 수 있는 곳은 3군대로 정의 할 수 있다. 변수 메서드 클래스 하지만, final이라는 것은 무엇가..

    equals, hashCode 메서드는 왜 사용하나요?

    📝느낀 점 우테코 프리코스 할때가 생각난다. 한주 과제를 제출하고 나면 다른 사람들은 어떤 식으로 코드를 작성하였나? 궁금하고, 배우고 싶기에 여러 사람들의 코드를 봤던 기억이 난다. 그때 어떤 사람들은 equals, hashCode 이런 메서드들을 정의하고 사용하고 있었는데, "저게 뭘까?" 하며 구글링을 하며 찾아보며 했지만, equals, hashCode라는 것에 개념만 알게 되었다 그 뒤로 시간이 지나 자바에 대해 깊게 공부해보자는 생각에 이렇게 정리를 해본다. equals는 주소값이 달라도 문자에 대한 내용만 같다면 같다고 보는 메서드이고, hashCode은 해시 컬렉션에서 사용되며, 동일한 객체라면 동일한 해시코드를 가지고 있기에, hashCode 메서드도 같이 재정의하여 사용하게 되는 개념인..