public class Test {
public static void isFile() {
System.out.println(new File("D:\\a.log").isFile());
}
public static void main(String[] args) {
System.out.println(new File("?D:\\a.log").isFile());
isFile();
}
}
Run Code Online (Sandbox Code Playgroud)
预期的结果是:
true
true
Run Code Online (Sandbox Code Playgroud)
但实际上结果是:
false
true
Run Code Online (Sandbox Code Playgroud)
文件D:\ a.log实际存在且路径正确,jdk版本为1.8.0_11,os为win10
怎么理解这个?
MemoryMXBean.getHeapMemoryUsage()
我有一个使用 -Xms512m -Xmx512m 运行的 jvm 进程,下面显示了该进程的 MemoryMXBean.getHeapMemoryUsage() :
init = 512M
used = 105M
comitted = 491M
max = 491M
Run Code Online (Sandbox Code Playgroud)
此过程的MemoryMXBean.getNonHeapMemoryUsage() MemoryMXBean.getNonHeapMemoryUsage():
init = 2M
used = 25M
comitted = 25M
max = 0M
Run Code Online (Sandbox Code Playgroud)
-Xms
-Xms(初始堆大小)是什么意思?我曾经认为初始堆大小是jvm启动时jvm实际从os分配多少内存,但事实证明是错误的。顶部显示该 jvm 的 RES 接近 150m,但该 jvm 是使用 -Xms512M 运行的。
下面的公式正确吗(或者几乎正确-_-)?如果不是,还应该考虑什么?
total memory a jvm used = used of MemoryMXBean.getHeapMemoryUsage()
+ used of MemoryMXBean.getNonHeapMemoryUsage()
+ the direct memory we used in application level
Run Code Online (Sandbox Code Playgroud)
任何事情都会受到赞赏!