JVM Warm-up, feat. 스프링 첫 요청이 오래 걸리는 이유
·
💻 Dev/Java & OOP
원인웹 애플리케이션을 실행한 후 초기 요청이 지연되는 현상을 이해하려면, 자바 프로그램이 실행되는 방식을 깊이 살펴볼 필요가 있다.C, C++과 같은 컴파일 언어는 소스 코드를 기계어로 직접 변환하여 최적화된 성능을 제공하나 빌드 환경에 종속적이라는 단점이 있다.즉, 플랫폼이 바뀌면 재컴파일이 필요하다. 자바는 이러한 플랫폼 종속적인 문제를 해결하고자 JVM을 도입하였다.자바는 자바 코드는 컴파일 시 바이트 코드로 변환되고, 실행 시 JVM이 이를 기계어로 변환하여 실행한다.이러한 구조 덕분에 Java는 플랫폼에 종속되지 않게 되었지만, 이 과정에서 변환 작업이 추가되므로 성능에 영향을 미칠 수 있다. 1. 클래스 로더JVM에서 클래스 로더(Class Loader)는 바이트 코드를 메모리에 로드하는 역할..
[Java] 매출액의 종류
·
💡 Algorithm/인프런
Problem 💻현수의 아빠는 제과점을 운영합니다. 현수아빠는 현수에게 N일 동안의 매출기록을 주고 연속된 K일 동안의 매출액의 종류를각 구간별로 구하라고 했습니다.만약 N=7이고 7일 간의 매출기록이 아래와 같고, 이때 K=4이면20 12 20 10 23 17 10각 연속 4일간의 구간의 매출종류는첫 번째 구간은 [20, 12, 20, 10]는 매출액의 종류가 20, 12, 10으로 3이다.두 번째 구간은 [12, 20, 10, 23]는 매출액의 종류가 4이다.세 번째 구간은 [20, 10, 23, 17]는 매출액의 종류가 4이다.네 번째 구간은 [10, 23, 17, 10]는 매출액의 종류가 3이다.N일간의 매출기록과 연속구간의 길이 K가 주어지면 첫 번째 구간부터 각 구간별매출액의 종류를 출력하는..
[F-Lab] 2주차 회고
·
📝 끄적끄적/F-Lab
사전 질문NullpointerException에서 포인터 개념 정리노트 확인받기instanceof 단점 부분과 다형성 코드에서 의문점OutOfMemory 에러 PermGen 사전 학습자바의 신 2권 (할 수 있는 만큼 학습)7장까지 학습1주 차 보충 질문 학습 (다 정리했다! 뿌듯)JVM Warm-up, feat. 스프링 첫 요청이 오래 걸리는 이유JDK 8에서 Perm 영역이 삭제된 이유Out-of-Memory (OOM) 왜 발생하고, 어떻게 예방할까?instanceof 사용을 지양해야 하는 3가지 이유Java는 포인터 없는 언어라고 했는데 왜 NullPointerException 이 발생하는 걸까?언제 interface 사용하고, 언제 abstract class 사용 하나? 멘토님 질문GC(블로그 정..
[F-Lab] 1주차 회고
·
📝 끄적끄적/F-Lab
사전 질문코테 공부법이직할 회사 고르는 법쿼리 성능개선 이력서 작성법 사전 학습이력서 수정자바의 신 1권 전체 학습 멘토님 질문자바 언어를 왜 사용하나요?JVM 동작 과정JVM의 단점은 없을까요?JVM 런타임 데이터 영역String객체 리터럴 vs new() 차이객체 지향 프로그래밍이란?pass by value vs pass by reference다향성이란?상속이란?instance of 키워드란?인터페이스란?인터페이스와 추상 클래스의 차이Exception과 Error의 차이Checked Exception vs UncheckedException어노테이션이란? 느낀 점먼저 냅다 기술질문을 하시기보다는 한 주 동안 어떻게 보내셨는지, 막혔던 건 없는지 아이스브레이킹을 해주신다.(휴가 갔다 왔으면 휴가 다녀왔다..
[F-Lab] 0주차 - 시작한 계기, 사전 미팅
·
📝 끄적끄적/F-Lab
퇴사3년 반 동안 다니던 회사를 퇴사했다.첨에는 "환승 이직해야겠지..?" 하고 한 회사에 지원해서 최종 면접까지 경험할 수 있었다.마지막 관문에서 대차게 말아먹고 떨어졌지만…이 과정에서 “이대로 이직한다고 100% 기쁠까” 생각해 보니, 꼭 그렇지만은 않았다.그간 회사에서 안 좋은 사건이 있었고, 지인들은 신고하라고 당장 그만두라고 했다.괜찮다고 꾸역꾸역 삼키고 버텼지만 괜찮지 않았다.결국! 내 마지막 20대, 처음이자 마지막으로 잠시만 쉬고 쭉 일하자 다짐했고, 1년 넘게 고민하다 퇴사했다.그 후에는 짧게 일하러 서울에 유학도 가고, 유럽 여행도 길게 다녀왔다.정~말 행복했다 ㅎㅎㅎ 후회하지 않는다! 😌  F-Lab을 선택한 이유이직 시장에서 나의 위치는 굉장히 불리하다고 생각했다.(SI → 성능..
JDK 8에서 Perm 영역이 삭제된 이유
·
💻 Dev/Java & OOP
JDK 8부터 자바는 기존의 PermGen(Permanent Generation) 영역을 제거하고, Native Memory를 사용하는 Metaspace를 도입했다. PermGen이란?PermGen(이하 Perm) 영역은 JDK 7까지 존재했던 메모리 영역으로, 클래스 메타데이터와 런타임 중에 읽힌 클래스 및 메서드 정보 등을 저장하는 공간이었다. Perm에 저장되는 데이터클래스 메타데이터(클래스 이름, 메서드 이름, 필드 이름 등)런타임 상수(Constant Pool)Static 변수(JDK 8 이전)메서드와 바이트코드 Perm 영역은 힙(Heap) 외부에 위치하며, JVM 실행 시 크기가 고정된다. 하지만 이 고정된 크기는 메모리 부족 문제를 자주 일으켰다. 동적으로 클래스들이 로드되고 Static ..