2024. 5. 1. 23:28ㆍ스프링 (Spring)/스프링 팁 (Spring Tip)
Background
사실 이 글을 작성하면서 조금 께름칙하네요.
모름지기 시스템에서 뱉는 불편하다는 메시지는 잘 알고 해결해야될 듯 한데,
이번 경우는 더 파고들어도 뭐가 안 나오고, 크게 걱정 없다는 조언? 들이 있어서 무시해보기로 합니다.
우리 시간은 소중하고, 짜증나는 빨간색 글씨를 없애기 위함이죠
A Java agent has been loaded dynamically
첫 번째 Warning입니다.
WARNING: A Java agent has been loaded dynamically (/home/park/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.14.12/be4984cb6fd1ef1d11f218a648889dfda44b8a15/byte-buddy-agent-1.14.12.jar)
WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
WARNING: Dynamic loading of agents will be disallowed by default in a future release
이렇게 생겼는데, 검색해보니 어렵지 않게 뜨거운 감자를 찾을 수 있었네요.
테스트 시 사용했던 mockito와 jdk21 간에 뭐가 있나보네요.
내용이 조금 어지럽긴 한데 원칙적으로 jdk에서는 라이브러리가 동적으로 agent를 부르는 것을 금하고 있지만,
현재로써는 -XX:+EnableDynamicAgentLoading 옵션으로 허용하도록 했고, 미래에는 언제든 막을 수 있다고 하네요.
여튼 그 시점이 되면 mockito 말고 다른 걸 쓰든, 업그레이드를 하든 해야겠네요.
메시지를 무시하려면 아래처럼 build.gradle.kts 파일의 jvmArgs에 추가해주면 됩니다.
tasks.withType<Test> {
useJUnitPlatform()
jvmArgs(
"-XX:+EnableDynamicAgentLoading"
)
}
OpenJDK 64-Bit Server VM warning
두 번째 Warning 입니다.
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
이게 무엇이냐... 찾아보니 아래에서 꽤 명료한 설명을 발견할 수 있었네요.
Application Class-Data Sharing이라는 게 어플리케이션 수준에서 클래스 메타 데이터를 미리 만들어놓고,
다음 번에 실행될 때 해당 데이터를 가져다 쓰므로 시작 성능을 높히는 건가보군요.
jdk에서는 class-data archive에 쓰는데, 어플리케이션은 bootstrap 클래스 경로를 참조하다보니
결국 class-data archive가 무의미하여 최적화가 일부 안되었다... 뭐 이런 이야기 같습니다.
여튼 어플리케이션 환경에는 문제가 없으니 무시해도 될 듯 합니다.
따라서 메시지를 무시하려면 아래처럼 build.gradle.kts 파일의 jvmArgs에 추가해주면 됩니다.
tasks.withType<Test> {
useJUnitPlatform()
jvmArgs(
"-Xshare:off"
)
}
Summary
// build.gradle.kts
tasks.withType<Test> {
useJUnitPlatform()
jvmArgs(
"-XX:+EnableDynamicAgentLoading",
"-Xshare:off"
)
}
'스프링 (Spring) > 스프링 팁 (Spring Tip)' 카테고리의 다른 글
Kotlin 플러그인 All-open 파헤치기 (feat, JPA Fetch) (0) | 2024.05.18 |
---|---|
Kotlin 답게 간단하게 로깅해보기 (0) | 2024.04.30 |
Mockito를 이용해 JpaRepository 테스트하기 (0) | 2024.04.30 |
Spring에 Jacoco 적용해보기 (0) | 2024.04.29 |
Spring에서 Gmail 보내기 (1) | 2024.04.29 |