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)
在接口java.lang.management.ThreadMXBean中实际定义方法时,您的代码正在使用接口com.sun.management.ThreadMXBean.你的链接指的是后者.
没有"线程记忆".所有线程在您的进程中共享同一个堆,并且您的线程没有私有内存.getThreadAllocatedBytes()返回的方法是线程分配的字节数.据我所知,这意味着它还计算了不再引用的分配字节,可能已经或已经被垃圾收集器回收.
因此,它是您的线程的内存分配的度量,而不是内存使用量的度量.