我正在尝试使用jvisualvm来查看Play Framework应用程序。
环境:Windows 7位,Java 7 64位。
步骤:
1)将-Dcom.sun.management.jmxremote
添加到_JAVA_OPTIONS
环境变量。
拿起_JAVA_OPTIONS:-Xms800m -Xmx1500m -XX:PermSize = 64m -XX:MaxPermSize = 256m -Dcom.sun.manageme nt.jmxremote
2)Ran jvisual vm(来自C:\Program Files\java\jdk1.7.0_03\bin
)。
3)我没有在本地进程列表中看到Play进程。
我错过了什么?
答案 0 :(得分:4)
我的环境
要连接到本地Play应用,唯一选项“ - Dcom.sun.management.jmxremote”就可以了。
但是为了连接到远程Play应用程序,JVM需要更多选项。
由于设置 _JAVA_OPTIONS 环境会影响所有Java程序,我改变了播放开始脚本: framework / pym / play / application.py
def java_cmd(self, java_args, cp_args=None, className='play.server.Server', args = None):
...
java_args.append('-Dcom.sun.management.jmxremote')
java_args.append('-Dcom.sun.management.jmxremote.port=5678')
java_args.append('-Dcom.sun.management.jmxremote.ssl=false')
java_args.append('-Dcom.sun.management.jmxremote.authenticate=false')
java_args.append('-Dcom.sun.management.jmxremote.local.only=false')
java_args.append('-Djava.rmi.server.hostname=192.168.0.10')
java_cmd = [self.java_path(), '-javaagent:%s' % self.agent_path()] + java_args + ['-classpath', cp_args, '-Dapplication.path=%s' % self.path, '-Dplay.id=%s' % self.play_env["id"], className] + args
return java_cmd
然后重新启动Play应用程序,并从VisualVM重新连接。
答案 1 :(得分:4)
如果指定了java.io.tmpdir,则有一个错误阻止进程在jvisualvm(或jps)中显示。请参阅http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7009828。
此外,自Java 6以来,设置com.sun.management.jmxremote并不是必需的(至少不要连接到同一台机器上的进程)。请参阅http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html。