请问怎样查看java程序占用的内存

danliandejintou 2011-05-02 04:10:21
比如helloworld小程序,我想知道,运行helloworld时需要多少内存。
...全文
685 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
danliandejintou 2011-05-02
  • 打赏
  • 举报
回复
比如jvm占用了X兆内存,但某个.java可能只需要其中的几K。我想知道,.java文件到底使用了多少K。
vboy1988 2011-05-02
  • 打赏
  • 举报
回复
JConsole
  JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。例如,启动一个可以在本地监控的J2SE的应用Java2Demo ,需输入以下命令:
  JDK_HOME/bin/java -Dcom.sun.management.jmxremote -jar JDK_HOME/demo/jfc/Java2D/Java2Demo.jar
  

  JDK_HOME需要是一个含有JDK5.0的目录。
  要启动JConsole,运行
  JDK_HOME/bin/jconsole
  
  一个用于连接的对话框将会打开。对话框的Local标签列出了所有本地正在运行的JVM,还包含进程的ID等信息。
  Figure 2: Local Tab.
  JConsole可以以三种方式连接正在运行的JVM:
  Local:使用JConsole连接一个正在本地系统运行的JVM,并且执行程序的和运行JConsole的需要是同一个用户。JConsole使用文件系统的授权通过RMI连接器连接到平台的MBean服务器上。这种从本地连接的监控能力只有Sun的JDK具有 Remote:使用下面的URL通过RMI连接器连接到一个JMX代理:
  service:jmx:rmi:///jndi/rmi://hostName:portNum/jmxrmi
  
  hostName填入主机名称,portNum为JMX代理启动时指定的端口。JConsole为建立连接,需要在环境变量中设置mx.remote.credentials来指定用户名和密码从而进行授权。
  Advanced:使用一个特殊的URL连接JMX代理。一般情况使用自己定制的连接器而不是RMI提供的连接器来连接JMX代理,或者是一个使用JDK1.4的实现了JMX和JMX Rmote的应用。
  当JConsole成功建立连接,它从连接上的JMX代理处获取信息,并且以下面几个标签页呈现信息。
  Summary tab. 监控JVM和一些监控变量的信息。 Memory tab. 内存使用信息 Threads tab. 线程使用信息 Classes tab. 类调用信息 VM tab. JVM的信息 MBeans tab.所有MBeans的信息MBeans tab展示了所有以一般形式注册到JVM上的MBeans。MBeans tab允许你获取所有的平台信息,包括那些不能从其他标签页获取到的信息。注意,其他标签页上的一些信息也在MBeans这里显示。另外,你可以使用 MBeans标签管理你自己的应用的MBeans
Jeelon 2011-05-02
  • 打赏
  • 举报
回复
JVM
Jeelon 2011-05-02
  • 打赏
  • 举报
回复
用的JV内存


Runtime time = Runtime.getRuntime();

time.maxMemory() ;
// 返回 Java 虚拟机试图使用的最大内存量。

time.totalMemory()
//返回 Java 虚拟机中的内存总量。

qhfu 2011-05-02
  • 打赏
  • 举报
回复
根看其他进程一样看, windows 看任务管理器,linux ps,
要看更加详细 可用jvisualvm, jprofile, jconsole, jstat

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧