小编win*_*lex的帖子

File.isFile()返回错误的结果?

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

怎么理解这个?

java file

4
推荐指数
1
解决办法
265
查看次数

如何理解java.lang.management.MemoryMXBean和-Xms?

MemoryMXBean.getHeapMemoryUsage()

我有一个使用 -Xms512m -Xmx512m 运行的 jvm 进程,下面显示了该进程的 MemoryMXBean.getHeapMemoryUsage() :

    init     = 512M
    used     = 105M
    comitted = 491M
    max      = 491M
Run Code Online (Sandbox Code Playgroud)
  1. 为什么最大是491M(我预计是512M)?

此过程的MemoryMXBean.getNonHeapMemoryUsage() MemoryMXBean.getNonHeapMemoryUsage():

    init     = 2M
    used     = 25M
    comitted = 25M
    max      = 0M
Run Code Online (Sandbox Code Playgroud)
  1. 非堆(谁使用它)是什么意思?什么样的内存会被计入这个非堆呢?我只知道我们在java代码中使用的直接内存不会(我说得对吗?)

-Xms

  1. -Xms(初始堆大小)是什么意思?我曾经认为初始堆大小是jvm启动时jvm实际从os分配多少内存,但事实证明是错误的。顶部显示该 jvm 的 RES 接近 150m,但该 jvm 是使用 -Xms512M 运行的。

  2. 下面的公式正确吗(或者几乎正确-_-)?如果不是,还应该考虑什么?

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)

任何事情都会受到赞赏!

java jvm

4
推荐指数
1
解决办法
2012
查看次数

标签 统计

java ×2

file ×1

jvm ×1