본문 바로가기
반응형

컴퓨터/Java23

[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.
[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.
[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.
[Java] List<Map<String, Object>> 을 List<Map<String, String>> 으로 형변환하기 //수치데이터 받아오고 List 원본 = ~~~ // 최종 결과값 담을 변수 생성 List 최종 new ArrayList(); //List ==> List for (int j = 0; j String 해서 넣어주기 temp.put("TRD_DT", 원본.get(j).get("IRR_TRD_DT").toString()); temp.put("AMT1", 원본.get(j).get("AMT1").toString()); temp.put("AMT2", 원본.get(j).get("AMT2").toString()); 최종.add(temp); } 2023. 2. 27.
[Java 공부] 프로그래밍 언어와 Java 의 특징 1. 프로그래밍 언어 👀 프로그램: 컴퓨터에서 특정 목적을 수행하기 위해 프로그래밍 언어로 작성된 소스를 기계어로 번역한 것 👀 프로그래밍 언어: 사람과 컴퓨터가 대화하기 위한 언어. 고급 언어와 저급 언어로 나뉜다. 👀 고급언어 뜻: 컴퓨터 언어 중 사람이 쉽게 이해할 수 있는 언어 종류: C, C++, Java.... 특징: - 컴퓨터가 바로 이해할 수 없기 때문에 Compile 과정을 통해 컴퓨터가 이해할 수 있는 기계어로 변역해야 한다. - 작성된 코드(소스) 는 Compiler 라는 소프트웨어에 의해 기계어로 변환된 후 컴퓨터에서 실행할 수 있다. 👀 저급언어 뜻: 컴퓨터 언어 중 컴퓨터가 쉽게 이해할 수 있는 언어 종류: 어셈블리어 특징: - 사람이 바로 이해하기 쉽지 않기 때문에 학습이 까다.. 2022. 4. 3.
[JAVA] 이것이 자바다 (신용권, 한빛미디어) 6단원 연습문제_5번 풀이 이것이 자바다 (신용권, 한빛미디어) 연습문제 풀이 ... [6번] 다음 Chatting 클래스는 컴파일 에러가 발생합니다. 원인이 무엇입니까? ... Chatting.java (오류 안나게 수정함) package exercise.exercise06; public class Chatting { void startChat(String chatId) { final String nickName = "닉네임"; Chat chat = new Chat() { @Override public void start() { String inputData = "안녕하세요"; String message = String.format("[%s] %s", nickName, inputData); sendMessage(message);.. 2021. 11. 10.
[JAVA] 이것이 자바다 (신용권, 한빛미디어) 6단원 연습문제_5번 풀이 이것이 자바다 (신용권, 한빛미디어) 연습문제 풀이 ... [5번] AnonymousExample 클래스의 실행 결과를 보고 Vehicle 인터페이스의 익명 구현 객체를 이용해서 필드, 로컬 변수의 초기값과 메소드의 매개값을 대입해보세요 ... Vehicle.java package exercise.exercise05; public interface Vehicle { public void run(); } ... Anonymous.java package exercise.exercise05; public class Anonymous { Vehicle field = new Vehicle() {// 로컬 메소드 @Override public void run() { System.out.println("field :.. 2021. 11. 9.
[JAVA] 이것이 자바다 (신용권, 한빛미디어) 6단원 연습문제_4번 풀이 이것이 자바다 (신용권, 한빛미디어) 연습문제 풀이 ... [4번] 다음과 같이 Car 클래스 내부에 Tire 와 Engine 이 멤버 클래스로 선언되어 있습니다.NestedClassExample 에서 멤버 클래스의객체를 생성하는 코드를 작성해보세요 ... Car.java package exercise.exercise04; public class Car { class Tire{} static class Engine{} } ... NestedClassExample.java package exercise.exercise04; public class NestedClassExample { public static void main(String[] args) { Car myCar = new Car(); Car.T.. 2021. 11. 8.
[JAVA] java 생성자와 메소드_getter, setter(게터세터) ... 1. 생성자 생성자는 인스턴스를 생성하는 역할을 한다. 메이플에서 새로운 케릭터 생성과 똑같다. 생성자는 초기값 세팅을 할 때 필요하다. 메이플스토리에서 처음 케릭터 생성할 때 스텟을 주사위로 굴려서 세팅하듯이... 나중에 케릭터가 커가면서 스텟은 올라갈 것이다. 생성자에서 초기값을 세팅해줬어도 언제든 값을 바꿀 수 있는것과 같다. ... 기본 생성자 자바에서 생성자는 이렇게 생겼다. 위에는 기본 생성자이고 밑에는 따로 세팅을 해준 생성자이다. 이름이 같지만, 매개변수가 다르기 때문에 다른 생성자이다.(오버로딩) ... 매개변수가 있는 생성자 매개변수가 있는 생성자를 살펴보면, 선언해줬던 멤버변수를 매개값으로 받아서 사용한다. ... this. 의 의미 this.는 자기 자신을 가리킨다는 뜻이다... 2021. 10. 27.
[JAVA] 메소드 선언 후 호출하기 (매개변수 유무, 반환값 유무에 따른 구분/ 배열,가변인수 출력) 0. 전체 코드 0-0 메소드 선언 클래스 package methodStudy; public class FunTestStudy { // 매개변수 없고, 반환값이 없음 void sayHi1(){ System.out.println("안녕하세요"); } // 매개변수 있고, 반환값이 없음 void sayHi2(String hello){ System.out.println(hello); } // 매개변수 없고, 반환값이 있음 int addNum100(){ int sum=0; for (int i=0; i 2021. 10. 23.
[Java] Java String (대입 연산자와 new 연산자의 차이, ==과 .equals의 차이) 1. 데이터 타입 1.1 데이터 타입 종류 1.2 기본 데이터 타입과 참조 데이터 타입의 차이점 1.3 스택 영역과 힙 영역 2. 참조 데이터 타입의 변수 선언 2.1 = 사용 (같은 주소값을 가리킴) 2.2 new 연산자 사용 (다른 주소값을 가리킴) 2.3 정리 3. ==과 .equals 3.1 new 연산자로 선언한 string을 ==로 비교 3.2 new 연산자로 선언한 string을 .equals로 비교 3.3 =로 선언한 string을 ==로 비교 3.4 =로 선언한 string을 .equals로 비교 ... 1. 데이터 타입 1.1 데이터 타입 종류 데이터 타입에는 기본 데이터 타입과 참조 데이터 타입이 있다. 기본 데이터 타입 : int, char, boolean... 참조 데이터 타입 :.. 2021. 10. 19.
[JAVA] 난수를 발생시켜 임의의 배수 출력하기 * [문제5] 임의의 수에서 임의의 배수를 구하라. * - 난수를 발생시켜 임의의 수를 지정하기 * - 2부터 5까지의 배수 * - 임의의 수는 10 이상 100이하 * - 10 이상인 난수를 발생시켜서 2부터 5까지의 배수를 구하라 * ------------------------------------------------------------ * 예) * 최대값 : 15(난수) * 배 수 : 4(난수) * 결 과 : 4, 8, 12 ... 풀이 public class ForExample05 { // 임의의 수 final static int MIN_NUMBER = 10; // 임의의 수 최소값 final static int MAX_NUMBER = 100; // 임의의 수 최대값 // 배수 final st.. 2021. 10. 15.
[JAVA] 라이브러리/클래스, 매소드, 객체/변수 알아보기 (2) 0. 라이브러리/클래스, 매소드, 객체/변수 1. 매소드 1-1 매소드 설정하기 1-2 매소드 매개변수 1-2-1 매개변수 1개 1-2-1 매개변수 여러개 0. 라이브러리/클래스, 매소드, 객체/변수 라이브러리 : 자동차 만드는 비법(기술) 클래스 : 자동차 공장 매서드 : 자동차 특징 (차 색, 바퀴4개, 연료종류, 엔진종류, 연료 양) 속성(변수) : 자동차 각각의 특징 (차 보라색, 바퀴 12인치, 연료 경유, 엔진 디젤, 5리터) 값 : 보라색, 12인치, 경유, 디젤, 5 1. 매소드 1-1 매소드 설정하기 자바를 이용해서 자동차 공장을 만들어봤다. 아직 대단한 기술이 없어도 자동차를 만들 수 있기 때문에 라이브러리를 사용하지 않았다. public class Factory { static voi.. 2021. 9. 24.
반응형