有没有办法获取正在运行的JVM的参数?是否有像jstat这样的命令行工具,它将JVM的pid作为输入并返回其起始参数?我对启动JVM时给出的-Xmx和-Xms值特别感兴趣.谢谢.
编辑:澄清我的约束.我们要检查的JVM正在生产服务器上运行.这就是为什么,我们更喜欢最小的破坏.我们可以使用jstat监视JVM,因此我们希望有一个类似的简单解决方案来访问参数.
编辑:我们还尝试使用jvisualvm获取参数.但为了连接到远程的JVM,我们需要运行jstatd和修改JVM,我们发现是非常具有破坏性和危险的生产服务器上的安全设置.
我有一个关于JVM的基本问题:它是编译器还是解释器?
如果它是一个解释器,那么JVM中存在的JIT编译器呢?
如果不是,那么JVM究竟是什么?(我不想要将字节码转换为机器特定代码等的jVM的基本定义)
我必须运行jmap才能获取我的进程的堆转储.但jvm回来了:
Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
Run Code Online (Sandbox Code Playgroud)
所以我使用了-F:
./jmap -F -dump:format=b,file=heap.bin 10330
Attaching to process ID 10331, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.51-b03
Dumping heap to heap.bin ...
Run Code Online (Sandbox Code Playgroud)
-F 是可以进行堆转储吗?我知道如何使用java代理启动java程序:
java -javaagent:myAgent.jar MyJavaProgram
Run Code Online (Sandbox Code Playgroud)
但是,如果我想添加2个或更多java代理程序来检测我的程序呢?我不想重新调用java -javaagent:...我必须在JVM中加载每个代理.
我尝试过这样的事情:
java -javaagent:agentA.jar, agentB.jar MyJavaProgram
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
java -javaagent:agentA.jar agentB.jar MyJavaProgram
Run Code Online (Sandbox Code Playgroud)
但没有成功.
有没有解决我的问题的答案?
谢谢.
Android Studio(Beta)0.8.4
操作系统版本:Windows 8
Java JRE/JDK版本:1.8.0_11
Error:Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at http://gradle.org/docs/1.12/userguide/gradle_daemon.html
-----------------------
Error occurred during initialization of VM
Could not reserve enough space for 1048576KB object heap
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
Run Code Online (Sandbox Code Playgroud) 我想知道使用break语句退出循环而不是满足循环条件是否是"不好的做法" ?
我对Java和JVM没有足够的了解来了解如何处理循环,所以我想知道我是否忽略了一些关键的东西.
这个问题的焦点:是否存在特定的性能开销?
对于Sun/Oracle的JVM,我读过GC algo将新一代划分为一个Eden区域和两个幸存区域.我想知道的是,为什么两个幸存者地区而不仅仅是一个?算法可以在伊甸园和一个幸存者区域之间保持乒乓(目前两个幸存者区域之间的方式); 或者这种方法有什么缺点吗?
有人可以解释我的区别Sleeping,Wait,Park,和Monitor线程状态中的VisualVM.

这是我发现的:
Running:线程仍在运行.
Sleeping:thread正在休眠(在线程对象上调用方法yield())
Wait:线程被互斥锁或屏障阻塞,并且正在等待另一个线程释放锁
Park:挂起的线程被暂停,直到它们被给予许可.取消停放线程通常是通过在线程对象上调用方法unpark()来完成的
Monitor:线程正在等待条件变为true以恢复执行
我无法理解的是州立公园,实际上是什么暂停线程?如何在代码中检测到什么使线程暂停执行?
有人可以在这方面指导我.
谢谢.