본문 바로가기
728x90
반응형

자바8

Java 힙 공간 에러 발생한 배치 성능개선후기 2022.08.19 개발된지 3년이 넘은 이후로 마지막 수정 2019년 초 나 입사 전 그 뒤 전혀 수정 없이 매달 루틴하게 잘쓰던 자료 추출용 정기작업 배치에서 오류가 발생하였다. [문제점] 에러 로그를 보다보니 한가지 특이한 점, statistic에서 눈에 띄게 cpu time이 높은 걸 확인할 수 있었음 10분짜리 (워낙 대용량 자료를 인풋으로 하고있음) 작업이라 치면 8분이상은 cpu를 잡아먹음 그리고 로그에 찍힌 에러 발생한 원인도 java 힙 공간 에러 java.lang.outofmemory 어쩌고 저쩌고 로그가 가리키는 줄은 if (조건 a를 만족) -> b 로 출력한다 같은 단순한 라인이었지만 저 라인만이 문제가 아닐 것이라고 생각하여 코드 전체에 대한 분석을 팀원들과 함께 진행하였음 워낙.. 2022. 8. 22. 18:27
코딩테스트 카테고리를 신설했습니다. 코딩테스트를 한번도 준비해본적이 없는 입장에서(.....) 문제 유형과 많이 사용되는 사이트/ide들에 적응해야 할 필요가 느껴진다. 아무리 찾아봐도 어느정도 기초가 있는 사람들에게 맞는 어려운 강의들은 많은데 나같이 언어 써보고 개발만 해봤지 전공지식이 부족하고 테스트 자체를 처음 준비 시작하는 사람들에게는 참고할만한 게 생각보다 별로 없는 것 같아서 카테고리를 파게 되었다. 기초 강의도 많고, 어려운 문제들 푸는 강의도 많은데 중간이 없는 느낌이라 해야하나? 내가 못찾아서 못한건가? 처음 코딩테스트를 준비하는, 비전공자 시선에서 시작해보는 카테고리 아, 코딩테스트도 안쳐본 비전공자가 지금 회사 어떻게 입사했냐고? 라떼는 코딩테스트 있는 회사가 훨씬 적었다ㅠㅠ 개발 직무가 아닌 기획을 비롯한, 원래 전.. 2021. 10. 30. 20:26
Java의 Generic 이번 시간에는 generic에 대하여 알아보려 합니다. 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미합니다. Java 5 이전에는 대부분의 클래스와 메서드에서 인수나 반환값으로 Object을 사용했습니다. 그러나 object을 사용하는 경우에는 저장할 때와 읽어올 때 총 두 번 다시 원하는 타입으로 타입 변환해야 하며, 이때 오류가 발생할 가능성이 여전히 남아 있습니다. 이를 해결하기 위해 Java 5 버전부터 generic이 추가되어, 클래스/메서드 단에서 잘못된 타입 사용으로 인한 문제를 해결할 수 있게 되었습니다. 제네릭의 장점을 크게 2가지로 요약할 수 있습니다. 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있습.. 2021. 8. 29. 16:01
Stack(push/pop) 이번 시간에는 stack에 대하여 알아보려 합니다. Stack은 ‘쌓아 올림’, ‘더미’ 라는 뜻을 가진 단어입니다. 선형 메모리 공간에 데이터를 쌓아 저장하면서 후입선출(LIFO)의 시멘틱을 따르는 자료 구조입니다. 맨 처음 들어간 데이터가 바닥에 쌓이고, 맨 마지막에 저장된(push) 데이터가 제일 먼저 인출되어(pop) 삽입/삭제/수정이 가능합니다. 프링*스 과자를 생각하면 이해하기 쉬울 것 같네요. 통에 과자를 넣을 때, 맨 나중에 들어간 과자를 맨 처음 먹게 될 것입니다. 스택도 같은 원리입니다. 맨 위 데이터를 top이라고, 맨 아래는 bottom이라고 부르며, 보통의 경우 bottom의 값은 0으로 고정됩니다. stack에서 자주 사용되는 메소드는 다음과 같습니다. 메소드 설명 boolean.. 2021. 8. 27. 15:51
Hashmap / Treemap 이번 시간에는 map 구조, 그 중 가장 많이 쓰이는 hashmap과 treemap에 대해 알아보려고 합니다. Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용합니다. 여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다. Map 컬렉션 클래스의 공통된 특징 2가지가 다음과 같습니다. 1. 요소의 저장 순서를 유지하지 않습니다. 2. 키는 중복을 허용하지 않지만, 값의 중복은 허용합니다. 해시 알고리즘(hash algorithm)이란 해시 함수(hash function)를 사용하여 데이터를 해시 테이블(hash table)에 저장하고, 다시 그것을 검색하는 알고리즘입니다. 자바에서 해시 알고리즘을 이용한 .. 2021. 8. 26. 15:46
자바Java 메서드 (2) – return 이번 시간에는 메서드가 값을 return하는 방법에 대해 알아볼까 합니다. 예제 코드를 함께 보면서 진행하겠습니다. class ReturnTest { public static void main(String[] args) { ReturnTest r = new ReturnTest(); int result = r.add1(3,5); System.out.println(result); int[] result2 = {0}; //배열을 생성하고 result2 배열 0번지 값 초기화 r.add2(3,5,result2); System.out.println(result2[0]); int result3 = r.max(3,5); System.out.println(result3); } int add1 (int a, int b).. 2021. 8. 19. 19:04
자바 Java 선언 위치에 따른 변수의 종류 package study; class Variables { int iv; //instance variable static int cv; //class variable void method() { int lv = 0; //local variable } } /* 코드와 텍스트를 함께 봐 주세요! */ 위 코드의 3가지 변수 중 iv는 인스턴스 변수로, 인스턴스가 생성될 때 지정됩니다. 인스턴스마다 다른 값을 가질 수 있으므로, 필요에 따라 값을 새롭게 지정할 수 있습니다. 반면 클래스 변수 cv는 고정된 값으로, 이 클래스를 통해 인스턴스화된 객체들이 공통된 변수를 공유하게 됩니다. 그래서 클래스 변수는 공유 변수라고도 부릅니다. 한편 lv는 지역 변수로 메서드 안에서만 사용이 가능합니다. 다시 말해, 메서.. 2021. 8. 17. 18:50
자바Java 인스턴스의 생성과 사용 -prologue- 신입사원 시절 사내 기반기술 테크레터 약 20편 정도?를 3개 시즌에 걸쳐 준비하여 배포한 적이 있다. 그때 배포한 내용을 문제되지 않을 선에서 적절히 편집 및 재구성하였다. 시즌1. 자바 시즌2. 자료구조 시즌3. Oracle tuning - 인데 시즌3은 대외비 내용이 많아서 아카이빙 못해둘지도 --------------------------------------------------------------------------------------------------------------------- 첫 주제로, 자바 인스턴스의 생성과 사용에 대한 내용을 정리해 보았습니다. /* 아래 코드와 텍스트를 함께 봐 주세요! */ class Tv { //속성 String color; b.. 2021. 8. 16. 13:38
728x90
반응형