반응형
[Java] OOM 발생 시 Heap Dump를 통해 분석해보기
개발/Java&Kotlin2023. 7. 27. 21:59[Java] OOM 발생 시 Heap Dump를 통해 분석해보기

[Java] OOM 발생 시 Heap Dump를 통해 분석해보기 IntroSpring으로 개발한 웹 애플리케이션을 운영하다 보면, 메모리 누수가 발생하거나 많은 트래픽이 몰리는 현상 또는 구현 상의 버그로 인해 Heap의 사용량이 순간적으로 크게 증가할 수 있습니다.이 경우 GC가 과도하게 일어나면서 애플리케이션의 성능을 저해할 수 있고, 심한 경우에는 OOM(Out Of Memory) 에러가 발생하여 애플리케이션이 다운될 수 있습니다.해당 에러가 발생하면 코드 상으로 어떠한 객체가 원인인지 찾아내기 상당히 어렵기 때문에, 해당 글에서는 OOM이 발생한 시점 Dump를 떠서 분석해보는 것을 목표로 합니다. OutOfMemoryError 발생시키기먼저, OutOfMemoryError(OOM)을 발생시키는 ..

알고리즘/백준2023. 7. 23. 23:14백준 7576. 토마토 (Java)

문제 링크 토마토 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static class Position { int x; int y; Position(int x, int y) { this.x = x; this.y = y; } } // BFS 탐색을 위한 queue 선언 static Queue queue = new LinkedList(); // 방향벡터 정의 static int[] dx = {1, 0, -1, 0}..

알고리즘/프로그래머스2023. 7. 23. 23:12프로그래머스 Level 2. 타겟 넘버 (Java)

문제 링크 타겟 넘버 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 코드 class Solution { public int solution(int[] numbers, int target) { int answer = dfs(0, 0, numbers, target); return answer; } private int dfs(int depth, int sum, int[] numbers, int target) { if(depth == numbers.length) { if (sum == target) return 1; else return 0; } retu..

알고리즘/백준2023. 7. 23. 23:05백준 1012. 유기농 배추(Java)

문제 링크 유기농 배추 풀이 코드 import java.util.*; public class Main { // 위치클래스 선언 static class Position { int x; int y; Position(int x,int y) { this.x = x; this.y = y; } } // 방향벡터 정의. static int[] dx = {1, 0, -1, 0}; static int[] dy = {0, 1, 0, -1}; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); StringBuilder sb = new StringBuilder(); while(t > 0) { int ..

알고리즘/백준2023. 7. 23. 23:04백준 4963. 섬의 개수 (Java)

문제 링크 섬의 개수 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static class Position { int x; int y; Position(int x, int y) { this.x = x; this.y = y; } } // BFS 탐색을 위한 Queue 정의. static Queue queue = new LinkedList(); // 방향벡터 정의(상, 하, 좌, 우, 대각선) static int[] dx =..

알고리즘/백준2023. 7. 20. 01:04백준 2606. 바이러스 (Java)

문제 링크 바이러스 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 풀이 코드(DFS) import java.util.*; public class Main { static int n; static int m; static int[][] graph; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); //정점의 개수 m = sc.nextInt(); //간선의 개수 graph = new int[n+1..

알고리즘/백준2023. 7. 20. 01:03백준 2178. 미로 탐색 (Java)

문제 링크 미로 탐색 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static class Position { int x; int y; Position(int x, int y) { this.x = x; this.y = y; } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt();; int m = sc.nextInt();; int[]..

알고리즘/백준2023. 7. 20. 01:02백준 1260. DFS와 BFS (Java)

문제 링크 DFS와 BFS 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static int n; static int m; static int[][] graph; static boolean[] visited; /** * 입,출력 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nex..

알고리즘/백준2023. 7. 20. 01:01백준 1065. 한수 (Java)

문제 링크 한수 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 풀이코드 import java.util.*; public class Main { static int answer; /** * 입,출력 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); print(solution(n)); } private static int solution(int n) { int answer = 0; ..

알고리즘/백준2023. 7. 20. 01:00백준 2747. 피보나치 수 (Java)

문제 링크 피보나치 수 풀이 코드 import java.util.*; public class Main { static int[] fibo; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println(solution(n)); } private static int solution(int n) { fibo = new int[n+1]; int answer = recursive(n); return answer; } private static int recursive(int n) { if(fibo[n] != 0) return fibo[n]; if(n == 0) r..

알고리즘/백준2023. 7. 20. 00:58백준 1018. 체스판 다시 칠하기 (Java)

문제 링크 체스판 다시 칠하기 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // n 입력받기 int n = sc.nextInt(); // m 입력받기 int m = sc.nextInt(); // board 입력받기 char[][] board = new char[n][m]; for(..

알고리즘/백준2023. 7. 20. 00:57백준 2503. 숫자 야구 (Java)

문제 링크 숫자 야구 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static class Question { String number; int strike; int ball; Question(String number, int strike, int ball) { this.number = number; this.strike = strike; this.ball = ball; } } /** * 입,출력 */ public static..

반응형
image
loading