有谁知道JOSsole位于MacOSX(Leopard)的哪个位置?
我正在研究一个java applet,我想知道在Ubuntu/OpenSUSE中System.out到底在哪里.在Windows中,我只是拉起jconsole,但我没有在Ubuntu/OpenSUSE中找到它.
谢谢.
任何人都可以澄清两者之间的差异吗?
Javadoc对我的理解非常模糊.
我注意到的一件事是,如果我ManagementFactory.getPlatformMBeanServer()用来注册我的MBean,我可以在Jconsole中查看它们.但是,如果我使用,则不是这样MBeanServerFactory.createMBeanServer().
这是为什么?这是唯一的差异吗?
谢谢.
我在Windows XP专业机器上运行了许多java进程.当我尝试通过本地JConsole连接到这些进程时,进程显示为灰色.
但是我可以在另一台机器上运行相同的进程,并通过该机器上的本地JConsole进行连接.
两台机器都运行java 1.6版本的进程和jconsole.
任何想法为什么这些过程都变灰了?
只要你不在生产盒上本地运行,Oracle/Sun就说它很好吗? http://download.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html
注意:使用jconsole监视本地应用程序对于开发和原型设计很有用,但不建议用于生产环境,因为jconsole本身会占用大量系统资源.建议使用远程监视将jconsole应用程序与受监视的平台隔离.
您是否曾在生产环境中启用它并且遇到任何性能影响?
我可以看到jconsole上的一些方法被禁用了.
以下是截图 com.sun.management.ThreadMXBean

这些MBean方法的javadoc没有指定有关可访问性部分的任何内容.
我认为这是一个安全功能,但我无法得到一个具体的答案.
这个问题的第二部分显而易见的是如何创建可以在jconsole上有选择地禁用的自定义MBean实现.
以下是系统配置:
JConsole版本"1.7.0-b147"
Java(TM)SE运行时环境(版本1.7.0-b147)
Java HotSpot(TM)64位服务器VM(内置21.0-b17,混合模式)
编辑:
禁用的方法可以从独立进程中调用.
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("java.lang", "type", "Threading");
String operationName = "getThreadAllocatedBytes";
//1 is main thread
Object[] params = {1};
String[] signature = new String[]{"long"};
Object result = server.invoke(name, operationName, params, signature);
//Result is 682760 on my machine
System.out.println(result);
Run Code Online (Sandbox Code Playgroud) 我正在研究Java JMX和JConsole.我很好奇JConsole的内存管理能力.例如,"内存"选项卡中有一个"执行GC"按钮:
假设我有一个简单的Java应用程序来占用内存,如下所示:
public class MemoryEater
{
public static void main(String[] args)
{
Vector v = new Vector();
while (true)
{
byte b[] = new byte[1048576];
v.add(b);
Runtime rt = Runtime.getRuntime();
System.out.println( "free memory: " + rt.freeMemory() );
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有办法配置JConsole以防止此应用程序消耗X大量内存?或者我需要通过JMX创建一个新的MBean?谢谢
我们正在编写一个java程序,它将密码保存在内存中.不幸的是,用户可以轻松地使用jconsole或jmap创建堆转储文件并打开它以查找密码.我认为jconsole使用本地套接字连接jvm.我想知道,有没有办法甚至为本地用户禁用jmx?有没有办法完全禁用堆转储?由于用户可以访问内存段,因此无论如何都可以访问密码.但是,我想禁用标准方法,以使操作尽可能昂贵.
我有一个运行作为Windows服务的Tomcat,并且已知这些不能与jstack一起运行.另一方面,jconsole运行良好,我可以看到各个线程的堆栈(我正在连接到"localhost:port"来访问它).
如何使用jconsole或类似工具将所有线程堆栈转储到文件中?(类似于jstack)
我正在尝试使用jconsole监视远程进程,这是我使用的命令
jconsole -debug localhost:4080
Run Code Online (Sandbox Code Playgroud)
这是我得到的堆栈跟踪
java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
java.io.EOFException
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:286)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at sun.tools.jconsole.ProxyClient.checkSslConfig(ProxyClient.java:217)
at sun.tools.jconsole.ProxyClient.<init>(ProxyClient.java:110)
at sun.tools.jconsole.ProxyClient.getProxyClient(ProxyClient.java:463)
at sun.tools.jconsole.JConsole$3.run(JConsole.java:510)
Caused by: java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:250)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:228)
Run Code Online (Sandbox Code Playgroud)
如果我将进程的pid提供给jconsole,它就能成功附加.