본문 바로가기
반응형

컴퓨터167

[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.
[레거시분석] 메모리 관점에서 참조형 객체 초기화 방법 (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.
[리눅스] 가상 OS-웹 개발💻3 | VirtualBox 6 + CentOS 8 | linux _외부/내부망 네트워크 설정 이전글 목록CentOS Stream과 미러 사이트 의미, iso 파일 종류설명https://gallery-k.tistory.com/454Java 프로젝트 개발에 맞는 CentOS 설정https://gallery-k.tistory.com/455   네트워크 초기 설정  금융권 개발은 보안이 중요하기 때문에 (금융권이 아니더라도 보안이 중요한 회사라면은)외부망/내부망 네트워크가 나눠져있다.내부망에서 개발을 진행하고, 개발이 완료된다면 외부망의 깃이나 타 서버와 연동해서 프로젝트 배포하는 식이다.   그래서 개발용 리눅스 서버에 외부망 네트워크, 내부망 네트워크를 각각 세팅해줘야 한다.NAT호스트 전용 어댑터외부 인터넷 연결용SSH 접속용 어댑터(내부)   세팅할 OS 를 우측클릭 후 설정 클릭(OS 이름 바.. 2024. 5. 28.
[Java] JavaSE, JDK, JRE 의미, JDK 의 주요 디렉토리 및 exe 정리 요약JavaSE의 구현체는 자바개발키트(JDK: Java Development Kit), 자바실행환경(JRE: Java Runtime Environment) 두 버전이 있다.JDK는 자바 애플리케이션을 개발하는 데 필요한 도구와 라이브러리 포함JRE는 자바 애플리케이션을 실행하는 데 필요한 런타임 환경 제공bin자바 애플리케이션을 개발하고 실행하기 위한 폴더- javac(컴파일)/java(JVM구동)/javap(역어셈블)confJDK의 구성과 관련된 설정 파일 포함lib자바 애플리케이션을 실행할 때 필요한 핵심 라이브러리 포함         1. JavaSE 구현체 JavaSE의 구현체는자바개발키트(JDK: Java Development Kit), 자바실행환경(JRE: Java Runtime Enviro.. 2024. 5. 3.
[리눅스] 가상 OS-웹 개발💻2 | VirtualBox 6 + CentOS 8 | CentOS 설치 및 기본 세팅_ Java 프로젝트 개발 환경에 맞게 이전글 목록CentOS Stream과 미러 사이트 의미, iso 파일 종류설명https://gallery-k.tistory.com/454      본격적으로 os 설치를 한다.   1. CentOS 8 설치  1. 새로 만들기를 눌러준다.    2. 원하는 가상머신 이름을 입력한 후, 종류는 Linux, 버전은 RedHat(64-bit) 를 선택해준다.  3. 적당한 메모리 크기를 설정 후 다음 버튼을 클릭한다. 램 크기 정하는건데 굳이 무거운 프로그램을 돌리지 않을거면 많이 안해도된다.걍 로컬 db 용으로 쓸거여서 2기가로 했는데 4기가정도도 괜찮을 듯 하다.추후에 늘릴 수 있으니 대충하고 넘겨도된다.    4. 하드 디스크 선택 창에서 '지금 새 가상 하드 디스크 만들기'를 클릭한다.   4-1. 가.. 2024. 4. 30.
[리눅스] 가상 OS-웹 개발💻1 | VirtualBox 6 + CentOS 8 | CentOS Stream과 미러 사이트 의미 정리 | iso 파일 종류 0. 사담가상 os 에서 웹 개발을 하게되어서 글을 써본다... 사실 가상머신 + os 설치는 인터넷에 정보가 많기도하고 나보다 훨씬 잘 정리해놓은 곳이 많아서굳이 내 블로그에 적을 이유가 있을까 싶었지만흔적 남기기 기록용으로 적는다.   다음과 같이 환경세팅을 할 예정이며, 글 1에서는 가상머신, 리눅스 os 를 구축할 것이다.설치파일설치 가능 목록가상머신Oracle VM VirtualBox (6.1.x)리눅스 os CentOS (8.x) RockySSH Clientputty Xshell MobaXtermFTP ClientFileZilaDB 관리툴dbeaver     1. VirtualBox 6설치Oracle VM VirtualBox는 한 컴퓨터에서 여러 OS를 동시에 실행할 수 있는 가상화 소프트웨어.. 2024. 4. 26.
반응형