본문 바로가기

분류 전체보기

(34)
[Java] JVM의 Heap, Stack구조에 대한 공부 자바 메모리 구조에 대한 공부를 하면서 Heap과 Stack 영역에 대하여 아주 간단하게 지나갔는데 자세하게 공부하겠다.위 그림(Runtime Data Area 영역)에서 JVM stack과 Heap의 대해 공부하겠다.Heap영역1. 프로그램을 실행하면서 생성한 모든 객체가 저장된다.2. 주기적으로 GC가 제거하는 영역이다.위 그림은 자바 7 이전과 8 이후의 JVM 구조이다. 위 그림처럼 Heap은 영역이 나누어지는데 이는 GC이 Heap을 효율적으로 삭제하기 위해서 3가지 영역으로 나누어진다. New/Young 생명 주기가 짧은 객체를 GC 대상으로 하는 영역 Edennew를 통해서 생성된 객체가 위치한다. 정기적인 GC후 살아남은 객체들은 Survivor로 이동한다.survivor1 / surviv..
[Java] 자바 메모리 구조에 대한 공부 (Heap,Stack,Method) jvm 영역에 대해서 공부를 했다. 공부를 하면서 자바 메모리 구조에 대하여 공부하겠다. 간단하게 Runtime Data Area를 다시 보면 위 그림과 같다. 여기서 Heap, Stack, Method의 구조와 영역에 대해서 공부할 것이다. 일단 자바에 변수에 대해서 알아야 한다. 자바의 변수는 아래 코드와 같이 나누어 진다. public class Shop{ public static int count = 10; // 클래스 변수 public int inventory = 100; //인스턴스 변수 } public class Main { public static void main(String[] args) {//매개 변수 //지역 변수 int wieght = 20; Shop sh = new Shop();..
[Java] JVM 구성에 대한 공부 JVM(Java Virtual Machine)OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다. 위 그림은 자바가 어떻게 동작하는지 간단하게 나타낸 그림이다.그림에서 자바 소스코드(.java) 를 Java Compiler(.javac)가 자바 바이트 코드(.class)형식으로 컴파일한다.바이트 코드란 JVM이 알아들을 수 있는 명령어 집합을 이야기한다.Class Loader를 통해서 컴파일된 바이트코드를 JVM Runtime Data Area로 로딩한다. 위 그림은 JVM 부분만 상세하게 나타낸 그림이다. 클래스 로더(Class Loader)JVM 내로 클래스 파일(.class)을 Load 하고, Loading 된 클래스들을 Runtime Data Area의 Metho..
[OS] 프로세스와 스레드에 대한 공부 프로세스 : 컴퓨터에서 연속적으로 실행되고 있는 상태를 말한다. 프로세스는 code, data, stack, heap의 구조로 독립된 메모리 영역으로 할당받는다. Code 영역은 프로그래머가 작성한 코드를 CPU에서 해석 가능한 기계어 형태로 저장되어 있는 영역이다. Data 영역은 전역(Global) 변수나 정적(Static) 변수가 저장되어 있는 영역이다. Stack 영역은 지역 변수, 매개변수, 반환 값 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장한다. Heap 영역은 동적 메모리 영역이다. 프로세스가 할당받는 메모리 영역은 위 그림과 같은 구조를 가진다. 프로세스에서 최소한 한 개의 스레드를 가진다. 각 프로세스는 별도의 주소 공간에서 실행된다. 한 프로세스는 다른 프로세스의 변수나..
[백준/JAVA] 1026 보물 문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다. 출력 첫째 줄에 S의 최솟값을 출력한다. 나의..
[백준/JAVA] 11047 동전 0 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 나의 풀이 import java.util.Scanner; import java.util.Arrays; import java.util.Collections; publi..
[프로그래머스/JAVA] 문자열을 정수로 바꾸기 문제 설명 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 나의 풀이 class Solution { public int solution(String s) { int answer = 0; answer=Integer.parseInt(s); return answer; } }
[프로그래머스/JAVA] 문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 나의 풀이 class Solution { public boolean solution(String s) { boolean answer = true; if(s.length()6){ return false; } else if(s.length()==5){ return false; } for(int i=0;i