获取线程内存

Aid*_*uly -1 java multithreading memory-management

美好的一天!我在获取java线程的内存使用方面遇到了麻烦.我的研究把我带到了ThreadMxBean库.根据javadocThreadMXBean#setThreadAllocatedMemoryEnabled,应该有一个getThreadAllocatedBytes允许获取线程内存的方法.但是,我找不到这种类的方法,而存在上述文档中描述的其他方法.

示例getCurrentThreadCpuTime()isThreadCpuTimeEnabled()显示在我的代码中.

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MalformedObjectNameException;
import javax.management.ReflectionException;

class TwoThreadsTest {
    public static void main (String[] args) throws Exception {
        new Coding("Jamaica").start();
        ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
        long b = threadBean.getCurrentThreadCpuTime();
        boolean bool= threadBean.isThreadCpuTimeEnabled();
        System.out.println(bool);
    }
}
Run Code Online (Sandbox Code Playgroud)

Cyr*_* Ka 5

在接口java.lang.management.ThreadMXBean中实际定义方法时,您的代码正在使用接口com.sun.management.ThreadMXBean.你的链接指的是后者.

编辑:

没有"线程记忆".所有线程在您的进程中共享同一个堆,并且您的线程没有私有内存.getThreadAllocatedBytes()返回的方法是线程分配的字节数.据我所知,这意味着它还计算了不再引用的分配字节,可能已经或已经被垃圾收集器回收.

因此,它是您的线程的内存分配的度量,而不是内存使用量的度量.