본문 바로가기

CS study

(47)
[Linux] nohup shell script 실행 불가 [240123 백업] centos nohup 스크립트 실행 불가 문제가 발생했다. 'nohup failed to run command 'java' no such file or directory' 문제. 즉, 자바를 읽지 못하는 문제이다. 문제 상황 1. /etc/progfile에 JAVA_HOME PATH 저장 후 root 계정과 chshin 계정 전부 적용됨을 확인한 상태이다. 두 계정 전부 echo $JAVA_HOME이나, java -version 등을 통해 성공적으로 경로가 등록되었다. 2. root 계정은 ./startup.sh 스크립트가 정상적으로 실행된다 (Scouter). 하지만 chshin의 경우 'nohup: redirecting stderr to stdout nohup: failed t..
[JVM] 실행 엔진(Execution Engine)과 JIT, 인터프리터 참조 : https://inpa.tistory.com/entry/JAVA-%E2%98%95-JVM-%EB%82%B4%EB%B6%80-%EA%B5%AC%EC%A1%B0-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%AD-%EC%8B%AC%ED%99%94%ED%8E%B8 ☕ JVM 내부 구조 & 메모리 영역 💯 총정리 저번 포스팅에서는 JRE / JDK / JVM에 대해서 간략하게 알아보는 시간을 가졌다면, 이번 포스팅에서는 JVM의 내부 구조에 대해 좀 더 자세하게 알아보도록 할 예정이다. JVM(자바 가상 머신)은 자바 언 inpa.tistory.com https://coding-factory.tistory.com/828 [Java] 자바 JVM 내부 구조와 메모리 구조에..
[troubleshooting][ClassLoader]동적 클래스로더와 계층 관계 개요와 문제 상황 Instrument API를 사용한 개발 도중, 기본 클래스로더가 아닌, 내가 만든 ClassLoader를 사용하여 동적 클래스를 로드하려고 시도하였다. 이 과정에서 확인차 ForName 등으로 Class 정보를 가져왔는데, 새롭게 얻은 지식을 정리하고자 한다. premain public static void premain(String agentArgs, Instrumentation instrumentation) { Banner.send(agentArgs); //로그 찍기 ConfigRead configRead = new ConfigRead(); //Config Read //CallThread.run(); JMX 쓰레드 생성 및 호출 //새로운 클래스를 생성하는 로직 try { Make..
[JVM]JVM과 ClassLoader 그리고 JIT의 관계 개요 JVM에서 컴파일러에 의해 번역된 Class 바이트코드들은 jar이 빌드되면 '부트스트랩 클래스로더' - '확장 클래스로더' - '시스템 클래스로더'를 읽어가면서 Runtime Area에 메타데이터와 Class 정보들을 저장한다. 이 방식만 보면 Java는 인터프리터라고 할 수 있을 것 같은데 왜 컴파일 방식을 혼합하여 사용한다고 하나? 라는 질문을 보았다. 이에 대해 조사하고, 답변하고자 한다. Java가 인터프리터가 아닌 이유 Java는 "컴파일된 인터프리터 언어"로 종종 설명된다. 이는 Java 프로그램이 바이트코드로 컴파일된 후, Java Virtual Machine(JVM)에서 실행되기 때문이다. Java Virtual Machine(JVM)에서 바이트코드를 처리하는 방식은 실제로 컴파일러..
클래스로더(ClassLoader)정리 클래스로더 클래스 로더는 JVM 내로 클래스 파일(*.class)을 동적으로 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈이다. 컴파일 단계 : complier에 의해 .class 바이트코드로 파일이 변환된다. 런타임 단계 : 런타임(bytecode를 실행할 때) 이 .class 파일을 로드하고 링크한다. 즉, 런타임 단계에서 로드된 바이트 코드(.class)들을 엮어서 JVM의 메모리 영역인 Runtime Data Areas에 배치한다. 클래스를 메모리에 올리는 로딩 기능은 한번에 메모리에 올리지 않고, 어플리케이션에서 필요한 경우 동적으로 메모리에 적재하게 된다. 클래스 파일의 로딩 순서 JVM에서 클래스를 로드하고 실행하는 과정은 크게 로딩(Loading), 링크(Linking), 초기화(I..
함수형 프로그래밍 패러다임 Lambda와 Stream을 다루면서, 이것을 잘 활용할 수 있는 함수형 프로그래밍의 개념도 같이 정리해보고자 한다. https://csg1353.tistory.com/213 람다(Lambda)식의 정의와 함수형 인터페이스 https://www.youtube.com/watch?v=4ZtKiSvZNu4 먼저 해당 포스팅은 다음 유튜브 설명을 참조했음을 미리 밝힌다. 이해에 큰 도움이 되니 확인해보길 권장한다. 기초 개념 자바에서 람다 표현식과 스트림 API는 csg1353.tistory.com https://csg1353.tistory.com/214 함수형 프로그래밍이 뭔가요? 사전적 개념 함수형 프로그래밍(Functional Programming, FP)은 프로그래밍 패러다임 중 하나로, 계산을 수학적 ..
람다(Lambda)식의 정의와 함수형 인터페이스, 메서드 참조 https://www.youtube.com/watch?v=4ZtKiSvZNu4 먼저 해당 포스팅은 다음 유튜브 설명을 참조했음을 미리 밝힌다. 이해에 큰 도움이 되니 먼저 확인해보길 권장한다. 이후 시간이 된다면 스트림 포스팅 역시 확인하면 도움이 될 것이다. https://csg1353.tistory.com/214 기초 개념 자바에서 람다 표현식과 스트림 API는 코드를 더 간결하고 명료하게 만들어주는 강력한 기능이다. 람다 표현식은 익명 함수의 한 형태로, 간결한 방식으로 메소드를 전달할 수 있는 기능을 제공한다. 스트림 API는 데이터 컬렉션을 선언적으로 처리할 수 있도록 해주며, 람다 표현식과 함께 사용될 때 더욱 효과적이다. 람다(Lambda) 메서드를 하나의 식으로 표현한 것 람다 (lambd..
[HikariCP][DataSource]HikariDataSource/HikariPool, 그리고 동작 과정 HikariDataSource와 HikariPool HikariDataSource HikariDataSource는 DataSource 구현체이다. HikariCP를 사용하여 DataSource를 구현할 경우, 구체적인 구현체는 이 클래스가 된다. 이렇게 구현되어, Bean 인스턴스에 들어가 관리되는 것이다. 애플리케이션의 Config를 담당하기도 한다. application.properties 또는 application.yml 파일에 커넥션 풀 관련 설정(최대 커넥션 개수, 최소 유휴 커넥션 개수 등)을 지정할 때, 이 설정들은 com.zaxxer.hikari.HikariDataSource 인스턴스를 통해 관리된다. HikariDataSource 인스턴스는 HikariCP 커넥션 풀의 구성과 상태 관리를..