我正在尝试打开本地 java 应用程序以使用 VisualVM 进行分析,但自从我一周前上次使用它以来,它突然停止工作,我可以在应用程序框中看到程序,但如果我尝试打开从 cmd 行启动的程序或任何其他 java 程序(如 eclipse),它只会挂起,状态栏显示正在打开。如果它在尝试打开我自己的应用程序时尝试选择另一个虚拟机来打开,则 VisualVM 将锁定。
请注意,我可以打开并分析 VisualVM JVM,但不能打开和分析任何其他 JVM,
除了执行常规操作系统更新(包括内核)之外,我没有更改任何设置。我已确保我的 /tmp/hsperfdata_myusername 是可访问的,并且当我从命令行启动可视化 VM、Eclipse 或我自己的 java 程序时,我可以看到与文件夹中创建的进程 pid 相匹配的文件号。我尝试以 root 身份启动我自己的程序和 VisualVM 并尝试它,但没有什么区别。我已删除 .visualvm 文件夹以清除任何问题,但它不起作用,并且 Visualvm 的日志文件未提及任何错误。
我正在使用 java 7_u45-b18 运行 fedora 19。
当我启动 Visual vm 时,会打开一个端口 TCP localhost6.localdomain6:35138 (LISTEN)
如果我打开我自己的应用程序或 eclipse 并将其放置 10 分钟,它最终会连接(过去是立即连接),但是 CPU 分析和 GC 命令被禁用,这正是我想要的。
我知道您需要为远程连接指定 JMX 端口,但这都是本地的,所以我不明白为什么它突然变得很糟糕!
任何帮助将非常受欢迎。
我想将前 3 位从一个字节传输到另一个字节。目前我使用以下但它太慢了(不正确的分支预测会减慢速度)>
byte newByte = 0;
if(((oldByte >> 0)&1) == 1) newByte |= 1 << 0;
if(((oldByte >> 1)&1) == 1) newByte |= 1 << 1;
if(((oldByte >> 2)&1) == 1) newByte |= 1 << 2;
Run Code Online (Sandbox Code Playgroud)
如何在没有 if 语句或循环的单个操作中执行此操作?
注意:除了 bit num 3 之外的其他位可能会或可能不会在 oldByte 中设置,但我想忽略它们。
我尝试使用 newByte |= oldByte 但它传输的设置位超出了第 3 位,这不是我想要的。
有任何想法吗?