zoukankan      html  css  js  c++  java
  • 使用Jprofiler分析Java项目的内存开销情况并利用强制回收控制内存

    一、问题背景

    自己开发的Java项目中占用太多的Heap Space。即使在Eclipse的虚拟机参数中设置“-Xms128m -Xms2048m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m”之后,仍超出Heap空间。决定用Jprofiler分析问题原因。

    二、解决过程

    Jprofier分析过程中,发现下面的char[]和java.lang.String对象占用大量heap堆内存

    以char[]为例,分析调用char[]的instance(或者objects),选中以后,分析其incoming references,如下图所示,

    确定原因以后,分析主要是GraphBuilder类的对象占用了太多的空间。

    因此,在该类中添加如下函数。

    函数中对类的所有成员对象赋值为空,然后再强制执行垃圾回收。

    进一步:

    在使用该类的地方,主动调用这个类的销毁函数,然后再一次对类整体执行回收。

     三、解决效果

    启动Eclipse,进入调试,同时Jprofiler attach到调试进程。(在Eclipse中的Jprofiler图标上点一下,就能跟踪到调试进程。)

    执行builder.finalizeItSelf()以后。

     问题解决。说明内存得到了释放。

  • 相关阅读:
    ios tableviewcontroller
    jsp第十次作业
    jsp第九次作业
    jsp第八次作业
    jsp第七次作业
    jsp第六次作业
    jsp第五次作业
    jsp第四周作业-2
    jsp第四周作业-1
    软件测试第四周作业
  • 原文地址:https://www.cnblogs.com/xiaojieshisilang/p/13227617.html
Copyright © 2011-2022 走看看