qq_21438599
唱不完的小曲
采纳率50%
2016-03-16 14:34 阅读 2.4k
已采纳

java内存快照的一系列问题

什么是内存快照?如何得到内存快照?如何分析内存快照?linux系统下!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    devmiao devmiao 2016-03-16 17:44
  • willkinson willkinson 2016-03-17 02:13

    首先用ps -x找到你的进程号,用jmap -histo 进程号来打印输出目前堆里面的对象情况,太多就grep一下自己的业务类,分析一下哪个类的
    实例数量超过你的预期,不过这个命令貌似有个缺点,在老区的可回收待回收的对象也会被统计进去,所以执行命令前最好触发一下full gc,
    再详细点就用jmap -dump命令弄个文件出来,eclipse有插件可以打开查看,里面可以区分哪些是会被回收的哪些是堆里拿着的,
    再不行就自己做个端口服务socket或者http之类的,自己连过去把目前的内存里的对象信息拿过来,前提是你对内存里面的对象管理能支持

    点赞 1 评论 复制链接分享
  • wojiushiwo945you 毕小宝 2016-03-17 02:29

    jdk提供了Java虚拟机内存使用分析工具,jhat命令与jmap搭配使用,来分析jmap生成的堆转储快照。jstack是Java堆栈跟踪工具,jmap命令就是生成堆转储快照的。

    点赞 1 评论 复制链接分享

相关推荐