찾다
Javajava지도 시간Java에서 JVM 명령을 사용하여 서버 문제를 해결하는 방법

이 기사에서는 Java에서 JVM 명령을 사용하여 서버 문제를 해결하는 방법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. top(Linux 명령)

top 명령 실행: (아래에서 사용된 프로세스 15477의 세부 정보 보기)

 

시스템 정보(처음 5줄):

    • 라인 1: 상위 작업 대기열 정보(시스템 실행 상태 및 평균 부하). uptime 명령 결과와 동일합니다.

      • 평균 시스템 로드: 단일 코어 CPU의 경우 0.00은 로드 없음을 의미하고, 1.00은 전체 로드를 의미하며, 1개 이상의 면은 과부하를 의미하며, 이상적인 값은

      • 멀티 코어입니다. CPU 로드: CPU 코어 수 * 이상적인 값 0.7 = 이상적인 로드, 예: 4코어 CPU 로드는 2.8을 초과하지 않습니다. 이는 높은 로드가 없음을 의미합니다.

      • 형식: 최대 xx일, HH:MM

      • 예: 241일, 20:11은 241일 20시간 11분 동안 지속적으로 실행되었음을 의미합니다

      • 단락 1: 시스템 현재 시간, 예: 16:07:37

      • 단락 2: 시스템 실행 시간, 다시 시작하기 전의 시간 시간이 길수록 시스템이 더 안정적입니다.

      • 단락 3: 현재 로그인된 사용자 수, 예: 1 user, 현재 로그인한 사용자는 1명임을 나타냅니다.

      • 단락 4: 시스템 로드, 즉 평균 길이 작업 대기열, 3가지 값은 최근에 계산됩니다. 1, 5, 15분 동안의 시스템 부하 평균

    • 2행: 작업 프로세스 관련 정보

      • 단락 1: 총 프로세스 수, 예: 작업: 총 231개, 실행 중인 총 231개의 프로세스를 나타냅니다.

      • 단락 2: 실행 중인 프로세스 수, 예: 실행 중인 1개,

      • 단락 3: 휴면 프로세스 수, 예: 230 Sleeping,

      • 4단락: 중지된 프로세스 수, 예: 0 중지됨,

      • 단락 5: 좀비 프로세스 수, 예: 0 Zombie

    • 라인 3: Cpus CPU 관련 정보 멀티 코어 CPU인 경우 숫자 1을 누르면 각 코어의 CPU 정보가 표시됩니다. 이때 1번 줄은 CPU 코어 번호 줄로 변환되며 1번 줄은 앞뒤로 전환될 수 있습니다. .

      • 단락 1: us 사용자 공간 점유 CPU 백분율us 用户空间占用CPU百分比,例如:Cpu(s): 12.7%us,

      • 第2段:sy 内核空间占用CPU百分比,例如:8.4%sy,

      • 第3段:ni 用户进程空间内改变过优先级的进程占用CPU百分比,例如:0.0%ni,

      • 第4段:id 空闲CPU百分比,例如:77.1%id,

      • 第5段:wa 等待输入输出的CPU时间百分比,例如:0.0%wa,

      • 第6段:hi CPU服务于硬件中断所耗费的时间总额,例如:0.0%hi,

      • 第7段:si CPU服务软中断所耗费的时间总额,例如:1.8%si,

      • 第8段:st Steal time 虚拟机被hypervisor偷去的CPU时间(如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)

    • 第4行:Mem 内存相关信息(Mem: 12196436k total, 12056552k used, 139884k free, 64564k buffers) 

      • 第1段:物理内存总量,例如:Mem: 12196436k total,

      • 第2段:使用的物理内存总量,例如:12056552k used,

      • 第3段:空闲内存总量,例如:Mem: 139884k free,

      • 第4段:用作内核缓存的内存量,例如:64564k buffers

    •  第5行:Swap 交换分区相关信息(Swap: 2097144k total, 151016k used, 1946128k free, 3120236k cached) 

      • 第1段:交换区总量,例如:Swap: 2097144k total,

      • 第2段:使用的交换区总量,例如:151016k used,

      • 第3段:空闲交换区总量,例如:1946128k free,

      • 第4段:缓冲的交换区总量,3120236k cached

 进程信息:

  在top命令中按f按可以查看显示的列信息,按对应字母来开启/关闭列,大写字母表示开启,小写字母表示关闭。带*号的是默认列。

    • A: PID = (Process Id) 进程Id;

    • E: USER, 예: Cpu(s): 12.7%us,

      🎜🎜🎜단락 2: sy 커널 공간이 차지하는 CPU 비율(예: 8.4%sy,🎜🎜🎜🎜3단락: ni 우선순위가 변경된 프로세스가 차지하는 CPU 비율) 사용자 프로세스 공간에서, 예: 0.0%ni,🎜🎜🎜🎜단락 4: id 유휴 CPU 비율, 예: 77.1%id,🎜🎜🎜🎜단락 5: wa 입력 대기 중 CPU 시간 백분율을 출력합니다. 예: 0.0% wa, 🎜🎜🎜🎜 단락 6: hi CPU가 하드웨어 인터럽트를 처리하는 데 소비한 총 시간, 예: 0.0 % hi, 🎜🎜🎜🎜 단락 7: si CPU 서비스 소프트 인터럽트에 소요된 총 시간입니다. 예: 1.8%si,🎜🎜🎜🎜단락 8: st Steal time 하이퍼바이저가 가상 머신을 훔쳤습니다. 소비된 CPU 시간(VM이 현재 하이퍼바이저에 있는 경우 하이퍼바이저는 실제로 CPU 처리 시간의 일부를 소비합니다.) 🎜🎜🎜🎜🎜라인 4: 🎜🎜Mem 메모리 관련 정보 🎜 (Mem: 총 12196436k, 사용된 12056552k, 사용 가능한 139884k, 버퍼 64564k) 🎜🎜🎜🎜🎜🎜단락 1: 총 물리적 메모리, 예: Mem: 총 12196436k,🎜🎜🎜 🎜2항: 총 금액 사용된 물리적 메모리의 양, 예: 12056552k 사용됨,🎜🎜🎜🎜페이지 3: 사용 가능한 총 메모리 양, 예: Mem: 139884k free,🎜🎜🎜🎜페이지 4: 커널 캐시로 사용된 메모리 양, 예: 64564k 버퍼🎜🎜🎜🎜🎜페이지 5 행: 스왑 파티션 관련 정보 스왑(스왑: 총 2097144k, 151016k 사용, 1946128k 무료, 3120236k 캐시) 🎜🎜🎜🎜🎜🎜단락 1: p 영역 총계, 예: 스왑 : 총 2097144k,🎜🎜🎜 🎜No.2 세그먼트: 사용된 스왑 영역의 총량, 예: 151016k 사용,🎜🎜🎜🎜세그먼트 3: 프리 스왑 영역의 총량, 예: 1946128k free,🎜🎜🎜🎜 세그먼트 4: 버퍼링된 스왑 영역의 총량, 3120236k 캐시됨 🎜🎜🎜🎜🎜🎜 🎜프로세스 정보: 🎜🎜🎜 상단 명령에서 f를 누르면 표시된 열 정보를 볼 수 있고, 해당 문자를 누르면 열을 켜거나 끌 수 있습니다. . 대문자는 켜짐을 의미하고, 소문자는 꺼짐을 의미합니다. *로 표시된 열은 기본 열입니다. 🎜🎜🎜🎜🎜🎜🎜A: PID = (프로세스 ID) 프로세스 ID 🎜🎜🎜🎜🎜E: USER = (사용자 이름) 프로세스 소유자의 사용자 이름 🎜
    • H: PR = (우선순위) 우선순위 PR = (Priority) 优先级

    • I: NI = (Nice value) nice值。负值表示高优先级,正值表示低优先级

    • O: VIRT = (Virtual Image (kb)) 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

    • Q: RES = (Resident size (kb)) 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

    • T: SHR = (Shared Mem size (kb)) 共享内存大小,单位kb

    • W: S = (Process Status) 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程

    • K: %CPU = (CPU usage) 上次更新到现在的CPU时间占用百分比

    • N: %MEM = (Memory usage (RES)) 进程使用的物理内存百分比

    • M: TIME+ = (CPU Time, hundredths) 进程使用的CPU时间总计,单位1/100秒 
      b: PPID = (Parent Process Pid) 父进程Id 
      c: RUSER = (Real user name) 
      d: UID = (User Id) 进程所有者的用户id 
      f: GROUP = (Group Name) 进程所有者的组名 
      g: TTY = (Controlling Tty) 启动进程的终端名。不是从终端启动的进程则显示为 ? 
      j: P = (Last used cpu (SMP)) 最后使用的CPU,仅在多CPU环境下有意义 
      p: SWAP = (Swapped size (kb)) 进程使用的虚拟内存中,被换出的大小,单位kb 
      l: TIME = (CPU Time) 进程使用的CPU时间总计,单位秒 
      r: CODE = (Code size (kb)) 可执行代码占用的物理内存大小,单位kb 
      s: DATA = (Data+Stack size (kb)) 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb 
      u: nFLT = (Page Fault count) 页面错误次数 
      v: nDRT = (Dirty Pages count) 最后一次写入到现在,被修改过的页面数 
      y: WCHAN = (Sleeping in Function) 若该进程在睡眠,则显示睡眠中的系统函数名 
      z: Flags = (Task Flags ) 任务标志,参考 sched.h

    • X: COMMAND

    I: NI = (좋은 값) 좋은 값입니다. 음수 값은 높은 우선 순위를 나타내고, 양수 값은 낮은 우선 순위를 나타냅니다

O: VIRT = (가상 이미지(kb)) 프로세스에서 사용하는 총 가상 메모리 양, 유닛 kb . VIRT=SWAP+RES

Q: RES = (상주 크기(kb)) 프로세스에서 사용하고 스왑 아웃

되지 않은 물리적 메모리의 크기(kb)입니다. RES=CODE+DATA

T: SHR = (공유 메모리 크기(kb)) 공유 메모리 크기, 단위 kb

W: S = ( 프로세스 상태) 프로세스 상태입니다. D=무중단 절전 상태, R=실행 중, S=절전, T=추적/중지, Z=좀비 프로세스

K: %CPU = (CPU 사용량) 마지막 업데이트 현재 CPU 시간 사용량 백분율

N: %MEM = (메모리 사용량(RES)) 프로세스에서 사용하는 물리적 메모리의 백분율

M: TIME+ = (CPU 시간, 100분의 1) 프로세스에서 사용한 총 CPU 시간, 단위 1/100초
b: PPID = (상위 프로세스 Pid) 상위 프로세스 Id
c: RUSER = (실제 사용자 이름)
d: UID = (사용자 ID) 프로세스 소유자의 사용자 ID
f : GROUP = (그룹 이름) 프로세스 소유자의 그룹 이름
g: TTY = (Tty 제어) 프로세스를 시작한 터미널의 이름 . 터미널에서 시작되지 않은 프로세스는 다음과 같이 표시됩니다.
j: P = (마지막으로 사용한 CPU(SMP)) 마지막으로 사용한 CPU는 다중 CPU 환경에서만 의미가 있습니다.
p: SWAP = (스왑된 크기(kb)) 스왑 아웃된 프로세스에서 사용하는 가상 메모리의 크기(kb)
l: TIME = (CPU 시간) 프로세스에서 사용한 총 CPU 시간(초)
r: CODE = (코드 크기(kb)) 실행 코드가 차지하는 물리적 메모리 크기 , kb
s: DATA = (데이터+스택 크기(kb)) 실행 코드 이외의 부분(데이터 세그먼트 + 스택)이 차지하는 물리적 메모리 크기, 단위 kb
u: nFLT code> = (페이지 폴트 수) 페이지 폴트 수 <br>v: <code>nDRT = (더티 페이지 수) 이후 수정된 페이지 수 마지막으로 작성된 시간
y: WCHAN = (Sleeping in Function) 프로세스가 절전 모드인 경우 절전 모드의 시스템 함수 이름이 표시됩니다.
z: 플래그 code> = (작업 플래그 <sched.h>) 작업 플래그, sched.h 참조<p></p> <p></p> <p>top -Hp PID 실행, 예: top -Hp 15477<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/00a3d0e0fc1c314d9dbd1c777dd54c3b-4.png?x-oss-process=image/resize,p_40" class="lazy" alt="" style="max-width:90%"></p>프로세스의 스레드 보기 <p><span style="font-family: " microsoft yahei>참고: 이때 PID는 스레드 id</span></p> <p><span style="font-family: " microsoft yahei></span>스레드 15571에 예외가 있어서 확인해야 할 경우 jstack을 사용하여 스택을 인쇄하고 스레드 15571 상태를 확인하세요(15571 16진수 = 3cd3) </p>🎜 🎜🎜🎜🎜 2. jstack 🎜🎜 참조 java 명령 - jstack 도구 🎜🎜 ps jstack 로그를 통해 Java 프로세스를 볼 수 있습니다: 🎜🎜🎜🎜🎜 🎜🎜🎜 모니터 모니터: 🎜🎜🎜 모니터는 Java에서 스레드 간의 상호 배제 및 협력을 달성하는 것은 객체 잠금 또는 클래스 잠금으로 간주될 수 있습니다. 🎜🎜모든 개체에는 모니터가 하나만 있습니다. 🎜🎜다음 그림은 스레드와 모니터의 관계 및 스레드의 상태 전이를 설명합니다. 🎜🎜🎜🎜🎜🎜Entrt Set: 스레드가 동기화를 통해 개체의 잠금을 획득하도록 요청함을 나타냅니다. 객체가 잠겨 있으면 소유자를 입력하고 그렇지 않으면 항목 영역에서 기다리십시오. 객체 잠금이 다른 스레드에 의해 해제되면 즉시 경쟁에 참여합니다. 🎜🎜🎜🎜The Owner(소유자): 스레드가 개체 잠금을 위해 성공적으로 경쟁했음을 나타냅니다. 🎜🎜<p><span style="font-family: " microsoft yahei>Wait Set: 스레드가 객체의 <span style="font-family: " microsoft yahei>object.wait</span>() 메서드를 통해 객체의 잠금을 해제하고 대기 영역에서 깨어나기를 기다림을 나타냅니다. </span></p> <p><span style="font-family: " microsoft yahei>그림에서 볼 수 있듯이 모니터는 특정 순간에 하나의 스레드만 소유할 수 있습니다. 이 스레드는 <span style="font-family: " microsoft yahei><code><code><span style="font-family: " microsoft yahei>Active Thread</span>,而其它线程都是 <span style="font-family: " microsoft yahei>Waiting</span> <span style="font-family: " microsoft yahei>Thread</span>,分别在两个队列 <span style="font-family: " microsoft yahei>Entry</span> <span style="font-family: " microsoft yahei>Set</span>和 <span style="font-family: " microsoft yahei>Wait</span> <span style="font-family: " microsoft yahei>Set</span>里面等候。

<span style="font-family: " microsoft yahei>Entry</span> <span style="font-family: " microsoft yahei>Set</span>中等待的线程动作是 <span style="font-family: " microsoft yahei>Waiting for monitor entry</span>。

在 <span style="font-family: " microsoft yahei>Wait</span> <span style="font-family: " microsoft yahei>Set</span>中等待的线程动作是 <span style="font-family: " microsoft yahei>in Object.wait()</span>Active Thread

이고 다른 스레드는 입니다. Waiting <p>Thread<span style="color: #888888"></span></p>, 각각 두 개의 대기열 Entry <h4 id="Set">Set</h4><p>Wait<strong> </strong>Set</p>에서 대기 중입니다.

Entry

Set

에서 대기 중인 스레드 작업은 Waiting for monitor Entry입니다.

<strong>Wait</strong> <span style="color: #993300">Set<strong></strong></span>에서 대기 중인 스레드 작업은 Object.wait()

<p>입니다. <strong>스레드가 임계 섹션에 들어가기 위해 적용되면 Entry Set 대기열에 들어갑니다. </strong><span style="color: #993300"><strong><strong>(Synchronized로 보호되는 코드 세그먼트를 임계 섹션이라고 부릅니다. 스레드가 임계 섹션에 진입하기 위해 적용되면 "Entry Set" 대기열에 들어갑니다.) </strong></strong></span>스레드 상태: </p> <p><strong>NEW</strong>: 아님 시작되었습니다. 덤프에 나타나지 않습니다. </p> <h4></h4>RUNNABLE<p>: 가상 머신에서 실행되는 실행 상태입니다. </p> <p>소유자 영역<strong></strong><span style="color: #000000"></span></p>BLOCKED<p>: 차단되었으며 모니터 잠금을 기다리는 중입니다. <strong></strong>엔트리 세트 구역에서 자물쇠<span style="color: #000000"></span>를 기다리고 있습니다. </p> <p><strong>WATING</strong>: 다른 스레드가 특정 작업을 수행할 때까지 무기한 대기합니다. <span style="color: #000000"></span>Wait Set 영역에서</p> <p>특정 조건이나 모니터가 발생할 때까지 기다리세요. 일반적으로 wait()와 같은 문에 머물게 됩니다. <strong></strong><span style="color: #000000">TIMED_WATING</span>: 다른 스레드에서 특정 작업을 기다리는 시간이 제한되어 있습니다. </p> <p> <span style="color: #808080">Wait </span>Set Area </p> <p>와 WAITING의 차이점은 wait() 및 기타 문에 wait(timeout) 시간 제한을 추가한다는 것입니다. <span style="color: #808080"></span></p>TERMINATED<h4 id="종료되었습니다">: 종료되었습니다. </h4> <p>호출 수정</p> <p>은 스레드가 메서드를 호출할 때 추가로 중요한 작업을 나타냅니다. 위의 메서드 호출을 수정하세요. <strong></strong></p>locked<p> 대상 : 모니터 소유자인 객체 잠금을 성공적으로 신청하려면 동기화를 사용하세요. <strong>소유자 공간. </strong></p> <p><strong>잠금 대기 중</strong> 대상: 동기화를 사용한 개체 잠금 신청이 실패했습니다. </p>항목 세트 영역에서 잠금을 기다리는 중입니다. 스레드 상태는 Blocked<p><strong></strong></p>waiting on<p> </p> <address> 목표: 동기화를 사용하여 객체 잠금을 성공적으로 적용한 후 잠금을 해제하고 대기 설정 영역에서 잠금을 기다립니다. 스레드 상태는 WAITING 또는 TIMED_WATING<strong></strong>🎜parking to wait for🎜 <address> 대상: park()가 🎜Wait Set 영역에서 호출되어 허가를 기다리고 있습니다. 🎜🎜🎜🎜(park는 모니터를 통해 개체를 차단하지 않는 기본 스레드 차단 기본 요소입니다. 🎜🎜🎜🎜 park: 스레드가 잠금을 얻을 필요가 없는 wait와 비교하여 WAITING 상태로 들어갑니다. 기다렸다가 unpark를 통해 깨어남) 🎜 🎜🎜Thread action🎜🎜Thread 상태가 생성되는 이유. 🎜🎜🎜runnable🎜: 소유자 영역, Object.wait()🎜의 RUNNABLE🎜🎜🎜 상태: wait() 호출, 대기 설정 영역, 상태는 WAITING 또는 TIMED_WAITING, 대기 수정 🎜🎜🎜모니터 항목 대기🎜: 잠금 대기 중, 진입 설정 영역, 상태 BLOCKED, 수정 대기 중 잠금🎜🎜🎜대기 조건🎜: 특정 조건으로 인해 주차됨, 대기 설정 영역, 상태는 대기 중🎜🎜🎜sleeping🎜: 휴면 스레드, 스레드 호출 .수면()🎜<h4 id="요약">요약</h4> <p>1. 먼저 스레드 상태/스레드 동작을 살펴보고(더 직관적으로) 스레드가 현재 어느 단계에 있는지 확인하세요. 그런 다음 통화 수정 및 잠금 상태를 보면 기본적으로 보조 스레드에 문제가 있는지 확인할 수 있습니다. </p> <p>2. 짧은 시간(문제가 있을 수 있는 기간)에 스레드 스냅샷을 여러 번 인쇄할 수 있습니다. ) 그런 다음 문제가 있을 수 있는 특정 스레드의 위치를 ​​확인합니다. 이러한 경우 문제를 효과적으로 찾을 수 있습니다. </p> <h3 id="jps"> 3. jps</h3> <p>는 리눅스 명령어 ps와 비슷합니다. </p> <p>참고 자바 명령어 학습 시리즈(1) - Jps</p> <p>./jps</p> <p style="text-align: center;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/2ed616fdd55510daae590e67d898e325-5.png?x-oss-process=image/resize,p_40" class="lazy" alt="" style="max-width:90%"></p> <p> ./jps -q</p> <p style="text-align: center;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/2ed616fdd55510daae590e67d898e325-6.png?x-oss-process=image/resize,p_40" class="lazy" alt="" style="max-width:90%"></p> <p>./jps - m</p> <p style="text-align: center;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/5cca488162d1a4710804a5c5e517320b-7.png?x-oss-process=image/resize,p_40" class="lazy" alt="" style="max-width:90%"></p> <p></p>./JPS -L j./JPS -V<p style="text-align: center;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/5cca488162d1a4710804a5c5e517320b-8.png?x-oss-process=image/resize,p_40" class="lazy" alt="" style="max-width:90%"></p> <p></p> 4, JMAP<p style="text-align: center;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/d80cdd751a575a3d3b19657daefa47da-9.png?x-oss-process=image/resize,p_40" class="lazy" alt="" style="max-width:90%" style="max-width:90%"> 참고 자료: Java 명령 학습 시리즈(3) -JMAP</p> <h3 id="Java-명령-JMap-명령은"> Java 명령 -JMap 명령은 </h3> <p> jmap을 사용합니다. -heap PID: 힙 사용량 </p> <p>jmap -histo PID: 개체 상태 </p> <p> (jmap -histo:live 이 명령이 실행되면 JVM은 먼저 gc를 트리거한 다음 통계를 수집합니다. </p> <p>프로젝트의 클래스에 중점을 둡니다. [C는 문자열에 사용되는 문자열 배열입니다. [B는 네트워크 계층에서 사용되는 바이트 배열입니다. 둘이 더 크더라도 상관없습니다.[]</p> <p> </p> [S는 짧습니다. []<p> </p> <p>  [나는 정수입니다. []<span style=" font-family: Arial; letter-spacing: 0.5px"></span> <br> 더 많은 관련 튜토리얼을 보려면 <span style=" font-family: Arial; letter-spacing: 0.5px">Java 비디오 튜토리얼</span>, <br>Java 개발 그래픽 튜토리얼<span style=" font-family: Arial; letter-spacing: 0.5px">, </span>부트스트랩 비디오 튜토리얼<br>을 방문하세요.</p> </address> </address>

위 내용은 Java에서 JVM 명령을 사용하여 서버 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 博客园에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?Mar 17, 2025 pm 05:46 PM

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까?적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까?Mar 17, 2025 pm 05:45 PM

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?Mar 17, 2025 pm 05:44 PM

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?Mar 17, 2025 pm 05:43 PM

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Mar 17, 2025 pm 05:35 PM

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기