两个问题:
首先,你需要什么“java技能”来pipe理服务器 – 运行 – java-apps? 例如:采取堆栈跟踪,采取堆转储,监视jvm等
其次,这样的系统pipe理员find什么工具是有帮助的。 (例如,一个应用程序来获取所有正在运行的jvm的堆栈跟踪可能会有所帮助)。
[编辑:在Windows上,至less,它有时很难找出哪个java.exe是哪个。 因此,“所有jvms”的堆栈跟踪将简化系统pipe理员的任务,而不是将其查找。 ]
我们的系统pipe理员有Windows背景。 我们想缩小开发人员和pipe理员之间的差距,所以系统pipe理员可以作为Java应用程序挂起/使用资源等的第一道防线。
什么适合你?
我会说一个JVMpipe理员需要知道如何至less:
其他人已经提到知道如何生成堆转储。
几个有用的工具:
通过线程转储(杀死Linux系统上的-HUP …不知道Windows上的等价机制是什么)可以为您提供应用程序状态的快照 – 类似于海森堡的不确定性原理(没有真正的:-)),它会告诉你现在的系统状态,但不会告诉你将要做什么或刚刚完成的工作。
线程转储是好的,因为它们只是将输出打印到应用程序的STDERR(或适当的日志),并且不会导致它locking。
使用堆转储对于了解应用程序中的数据状态非常有用 – 您可以使用诸如jmap(部分JDK / JRE分发版)之类的工具来进行堆转储。 但是这个关键问题是,为了进行堆转储,需要暂停JVM。 这导致应用程序基本locking到最终用户。 所以你可能不想这样做,除非事情真的搞砸了。
第三,您可以使用Java Management Extensions来监视应用程序的CPU,内存,线程和类的内部运行状态。 这也可以允许Java应用程序的开发者公开有关应用程序的内部统计信息,这些统计信息也可以被监视,例如使用Nagios的check_jmx工具。
最后,你显然有标准的系统工具,你可以得到监控CPU,磁盘I / O,内存利用等,这些都可以让你深入了解系统的整体健康状况,以及它是否在一个“好”的状态与否。
我认为其他的答案涵盖了大部分的基础,但是就具体的技能和工具而言,使用这些基础是一个出发点。
VisualVM的
为了立即检查正在运行的线程,并从所有可用的线程中selectJava进程, java.net VisualVM工具非常出色。
对于正在运行的Java线程和进程,本地和远程都有一个直观的树视图(如果对应用程序启用远程debugging)
你可以用它来保存正在运行的进程的快照,然后你可以在闲暇时进行分析。

你可以检查你的线程是什么状态,或者看一个configuration文件,看看你的应用程序花费了多less时间;

另外还有一些针对特定集成的插件 ,还有一个eclipse插件。
查看一些更酷的屏幕截图 – http://visualvm.java.net/
了解类加载器
我觉得在早期,我没有努力去理解JVM是如何工作的,特别是类加载器和容器生命周期。 而generics和参数化类的许多奇怪的东西使得更多的意义,如果你是什么策略的JVM使用。