본문 바로가기
반응형

분류 전체보기395

[JVM] JVM(자바) 의 메모리 구조 - 스택과 힙 영역, 스택 프레임이 쌓이는 과정과 힙 영역에 객체가 생기는 과정 if (list.get(i).getDataYN() == "Y") { dataSize++;} 만약 이 코드를 보고 이상한걸 못느낀다면…JVM 스택영역, 힙 영역에 어떤 데이터가 들어가는지 공부해야 한다.  JVM 의 실행자바 프로그램이 실행되면 컴파일된 .class 를 실행엔진이 메서드영역에서 읽으면서-> 스택영역에 순서대로 쌓으면서(스택 프레임 생성) 실행 + 실행되는동안 객체/배열이 있으면 힙에 생성  + 실행되는동안 가비지컬렉션이 힙 관리-> 실행이 다 되면 순서대로 스택에서 나감를 한다. 선요약 JVM 의 스택영역과 힙 영역public class Sample { // 인스턴스 필드 int x = 10; String name1 = "홍길동"; public void m.. 2024. 12. 24.
[JVM] JVM 의 메모리구조, 메모리 영역 별 저장되는 데이터 선요약 메서드 영역(Method Area): 클래스 로더에 의해 로드된 클래스의 메타데이터, 상수 풀, 정적 변수, 메서드 코드 등이 저장스택 영역(Stack Area):메서드 호출 시 생성되는 프레임이 저장각 스레드마다 스택이 하나씩 있고, 메인 스레드에 main()-프로그램 시작점 이 있음힙 영역(Heap Area): 객체와 배열, 인스턴스 변수가 동적으로 저장모든 객체는 힙에 생성되며, 전역 접근 가능  메모리 구조메서드영역, 스택영역, 힙영역으로 구성되어있다.일명 메스힙 자바 프로그램 실행 시의 대충 흐름은..자바실행 -> .java가 .class 로 컴파일 -> (클래스가 처음으로 참조될 때) 클래스로더가 .class 읽으면서 메서드영역에 클래스메타데이터, 상수풀, 정적변수 저장 + 정적변수 초.. 2024. 12. 23.
Spring Boot 의 요청-응답 순서 정리 | MVC 와 차이점 | DispatcherServlet 자동/수동 구성 SpringBoot 도 SpringMVC 의 요청 - 응답과 똑같이 처리가 되는데요청 처리 부분에서 차이점이 존재한다.SpringBoot 와 SpringMVC 의 큰 차이점 중 하나는 '설정파일 구성 여부' 이다.SpringMVC 는 개발자가 수동으로 구성하는 반면, SpringBoot 는 자동으로 구성된다.요청-응답 과정도 마찬가지… 차이점순서SpringMVCSpringBoot클라이언트가 요청을 보냄--DispatcherServlet에 요청이 도착xml 을 만들어서 요청 처리방법 정의web.xml 파일에 DispatcherServlet을 정의하고, 별도의 XML 파일(예: dispatcher-servlet.xml)이나 Java 설정 클래스를 통해 요청 처리 방법을 구성자동으로 (DispatcherSer.. 2024. 12. 21.
Spring MVC 의 요청-응답 순서 정리 | DispatcherServlet 과 컨트롤러 메소드의 선/후처리 순서클라이언트가 요청을 보냄DispatcherServlet에 요청이 도착HandlerMapping을 사용하여 적절한 핸들러(컨트롤러)를 찾음HandlerInterceptor 인터페이스의 preHandle 메소드 를 호출해서 선처리HandlerAdapter를 사용하여 핸들러 실행 준비HandlerMethodArgumentResolver를 사용하여 컨트롤러 메소드의 파라미터를 해석파라미터 전처리가 필요한 경우, 관련 메소드가 호출됨실제 컨트롤러 메소드 실행컨트롤러가 반환된 후 뷰 이름에 따라 뷰가 렌더링DispatcherServlet이 HandlerInterceptor 인터페이스의 postHandle 메소드를 호출해서 후처리응답 종료 (클라이언트에게 전송) 후 afterCompletion 메소드 호출 용어정.. 2024. 12. 20.
[JVM] JVM 동작 과정 - | 클래스로더, 실행엔진, 가비지 컬렉션 JVM 동작 선요약1. 컴파일된 자바를 클래스 로더를 통해 읽으면, 클래스 로더가 바이트코드를 검증하고 메모리에 올림 2. 클래스 로더가 할일을 끝낸다면 정적변수들이 기본값으로 설정된 후에 정적 초기화 블록이 실행됨 (초기화) 3. 그 후, 초기화가 끝나면 JVM 실행엔진이 작동 : 메모리에 올라간 바이트코드를 기계어로 번역해서 실행 4. 실행되는 동안 가비지 컬렉션이 힙메모리를 돌면서 사용되지 않는 객체들을 정리 클래스로더컴파일된 클래스 파일들을 JVM 안에 있는 클래스 로더가 읽음. 클래스로더는 컴파일된 바이트코드들을 동적로딩 한 다음에  메서드 영역에 넣음 => 클래스 로더는 클래스 파일을 로드하고 메모리에 올리는 일을 하는애 클래스로더 - 동적로딩클래스 파일을 로드한다 = 동적로딩 동적로딩은 프로.. 2024. 12. 19.
유압기기 핵심공식 필기노트 공유 | 펌프, 제어벨브, 액추에이터, 유압회로 용어 등 기계기사, 공기업 합격했던 닝겐의 귀한 필기노트입니다기계 블로그 접는 기념으로 유압기기 필기 노트 뿌립니다...하루에 하나씩 공개중ㅋㅋ  퍼갈때 출처 꼭 남겨주시고...무단으로 가져가면 저작권 신고할거에욤뀨 2024. 12. 2.
재료역학 핵심공식 필기노트 모음 | 1단원~10단원 | 모멘트공식, 보의 응력, 모멘트, 비틀림굽힘 등등 기계기사, 공기업 합격했던 닝겐의 귀한 필기노트입니다기계 블로그 접는 기념으로( 블로그를 접는건 아니니까 걱정 ㄴㄴ)재료역학 필기 노트 뿌립니다...퍼갈때 출처 꼭 남겨주시고...무단으로 가져가면 저작권 신고할거에욤뀨 2024. 12. 1.
유체역학 핵심공식 필기노트 모음 | 1단원~10단원 | 방정식, 포텐셜공식/좌표계 등등 기계기사, 공기업 합격했던 닝겐의 귀한 필기노트입니다기계 블로그 접는 기념으로( 블로그를 접는건 아니니까 걱정 ㄴㄴ)유체역학 필기 노트 뿌립니다...퍼갈때 출처 꼭 남겨주시고...무단으로 가져가면 열역학 필기노트처럼 저작권 신고할거에욤뀨 2024. 11. 30.
열역학 핵심공식 필기노트 모음 | 1단원~10단원 | 필수 사이클, 방정식 등등... 기계 블로그 접는 기념으로( 블로그를 접는건 아니니까 걱정 ㄴㄴ)열역학 필기 노트 뿌립니다...퍼갈때 출처 꼭 남겨주시고...무단으로 가져가면 저작권 신고할거에욤뀨 2024. 11. 29.
[레거시분석] 메모리 관점에서 참조형 객체 초기화 방법 (new, null) 회사 레거시 코드 분석중 어떤 코드는 참조형 객체를 null로 초기화했고어떤 코드는 참조형 객체를 new() 로 생성했다. 비슷한 로직인데 왜 이렇게 다르게 로직을 짰을까  예전에 고객이 프로젝트가 자꾸 죽는다고 컴플레인이 들어왔다.원인을 찾아보니 힙메모리를 3기가로 설정해서조금만 메모리를 사용해도 풀 gc 가 계속 돌아서 죽어버렸다. 아무튼 위의 얘기를 한 이유는new() 키워드로 객체 생성 : 안정성List columnList = new ArrayList(); 안정성: null 체크 없이 리스트의 메서드를 호출할 수 있으므로, NullPointerException 이 나지 않는다.그라고 변수를 선언할 때 바로 리스트를 생성하기 때문에 별도의 초기화 과정 없이 변수를 바로 사용할 수 있다.단점불필요한 .. 2024. 10. 22.
[리눅스] centos 7,8,9 mariadb 설치하기 | 연결테스트 설치할때마다 까먹어서 내가보려고 적음 아니 근데 centos8 나온지가 언젠데 벌써 지원 종료되면 어떡함centos 9로 다시 설치해야되잫아ㅠ  yum install mariadb 명령어로 설치하면mariadb server 가 없어서 start 오류가 남[root@proworks etc]# systemctl start mariadbFailed to start mariadb.service: Unit mariadb.service not found.이런 오류    그래서 밑의 명령어로 설치해야됨yum install mariadb-server mariady 눌러서 진행해준다.  설치 완료되면 start 해준다systemctl start mariadbps -ef | grep mariadb  잘 떠있으면 실행ㄱ  .. 2024. 10. 8.
[리눅스] mariaDB 설치 에러 : Curl error (37): Couldn't read a file:// file for file:///etc/pki/rpm-gpg/MariaDB-Server-GPG-KEY 오류  centos 8 stream 버전 에서 마리아 디비 설치 시 발생(centos6 ~ 버전도 해당)     root 로그인 후 mariadb 설치 중  Curl error 가 발생wget https://downloads.mariadb.com/MariaDB/mariadb_repo_seup./mariadb_repo_setupdnf install MariaDB-server MariaDB-client MariaDB-common      그래서 systemctl restart mariadb  이런거 해도 인식안됨 설치가 안되었으니까…    /etc/pki/rpm-gpg -> 이 경로로 접근해서 MariaDB-Server-GPG-KEY 키가 있는지 확인했는데 없음👍🥹    해결  마리아디비 공식 사이트인데.. 2024. 6. 20.
[리눅스] 오류: repo를 위한 메타자료 내려받기에 실패하였습니다 'appstream ': Cannot prepare internal mirrorlist: No URLs in mirrorlist_Centos 8, stream 오류내용/오류원인 BaseOS, Extras 등등...또는 오류: repo를 위한 메타자료 내려받기에 실패하였습니다 'appstream': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried이런 오류   centos 기반 linux 사용자에게 뜨는 에러메세지centos6~8 버전 지원 종료로 인한 미러사이트 접근 오류이다.  일단 나는 yum install jenkins 하다가 오류가 났다.java 랑 기타 tools 잘 설치했었는데 갑자기 jenkins 만...   오류해결  root 계정으로 로그인 후 cd /etc/yum.repos.dls -al자신의 centos 버전에 맞는 .repo 파일들이.. 2024. 6. 5.
[리눅스] 가상 OS-웹 개발💻5a-1 | VirtualBox 6 + CentOS 8 | linux _webtob 설치 후 서버 기동(1) 이전글 목록CentOS Stream과 미러 사이트 의미, iso 파일 종류설명https://gallery-k.tistory.com/454Java 프로젝트 개발에 맞는 CentOS 설정https://gallery-k.tistory.com/455linux _외부/내부망 네트워크 설정https://gallery-k.tistory.com/457jdk 설치, JAVA_HOME 환경변수 잡기https://gallery-k.tistory.com/458    webtob, jeus 다운/라이선스 받기 webtob, jeus, tibero는 티맥스 소프트의 소프트웨어이다.설치 전 티맥스소프트 회원가입을 해야 한다.회원가입 후에는 다음 화면에서 다운로드 받아야 한다.https://www.tmaxsoft.com/kr/dow.. 2024. 5. 30.
[리눅스] linux _jdk 설치, JAVA_HOME 환경변수 잡기 shell 에 접속해서 root 로 로그인해준다.jdk 도 사실 사용자별로 만들어주는게 좋지만 보통은 JAVA_HOME 은 고정이기 때문에 root 에 설정해준다.    jdk 버전 확인   설치할 jdk 버전을 확인한다.yum list java*jdk-devel 이때 devel 은 JDK 이다.자바 개발을 해야 한다면 devel 붙은거로 받아주고 그냥 코드실행만 한다면 devel 없는 버전을 다운받아준다. 참고로 devel 없는 버전들까지 검색하면 이렇게 나온다.   JDK 설치다음 명령어를 이용해 원하는 jdk 를 설치해준다.yum install -y java-1.8.0-openjdk-devel다라라락 설치되는 모습  설치완료 후 버전 확인을 해주고 설치 경로를 확인한다. 설치경로를 확인하는 이유는 .. 2024. 5. 29.
반응형