我正在使用JVM Explorer – link to JVM Explorer来分析我的Spring应用程序.我有以下问题.

>为什么’使用堆内存’即使在应用程序之后也会不断增加
已启动并尚未收到任何请求? (图1)
>为什么即使在垃圾收集之后和收到任何请求之前
‘二手堆内存’不断增加? (图像2)
>为什么在垃圾收集之后,通过向应用程序发送一些请求,加载类的数量正在增加?应用程序不应该使用以前的类吗?为什么它只是增加几乎所有东西(堆,加载类的数量)? (图像3)

申请开始后 – enlarge image

单击“运行垃圾收集器”按钮后. – enlarge image

在完成垃圾收集程序 – enlarge image之后向应用程序发送一些请求之后

解决方法

Why ‘Used Heap Memory’ keeps increasing even after the application has started up and have not received any requests yet? (Image 1)

JVM中的某些东西正在创建对象.你需要一个内存分析器来看看这是做什么的.它可能是Swing,或yoru应用程序或其他库的一部分.

BTW大多数分析工具使用JMX处理大量垃圾.例如当我在我的一些应用程序上运行FlightRecorder或VisualVM时,它显示JMX监视正在创建大部分垃圾.

Why even after garbage collection and before receiving any requests ‘Used Heap Memory’ keeps increasing? (Image2)

无论创建对象是什么,仍然在创建对象.

Why after garbage collection,by sending some requests to the application number of loaded classes is increasing?

类是懒惰加载的.在你做某事之前,不需要一些课程.

Is not the application supposed to use prevIoUs classes?

是的,但这并不意味着它不需要更多的课程.

why is it just increasing almost everything (heap,number of loaded classes)? (Image3)

您的应用程序正在做更多工作.

如果你不知道应用程序正在做什么工作,我建议使用像VisualVM或Flight Recorder这样的内存分析器.我使用yourkit来解决这些问题.

注意:调整Java程序需要付出艰苦的努力,这样才不会产生垃圾,我会说大多数库只会在导致已知性能问题的情况下尝试减少垃圾.

java – 为什么堆内存使用量和加载类的数量不断增加?的更多相关文章

  1. 如何找出Android 2的位图有多少可用堆大小?*?

    我们的应用程序使用了很多位图.它适用于例如G1,XOOM.但是在HTCDesire上有一个OutOfMemory错误.在代码中我们使用try/catch并且所有设备抛出异常,但HTC只是在没有OOM异常的情况下杀死应用程序.我们将位图的内存限制在12Mb,似乎这个解决方案解决了问题,但客户仍然在HTCDesireHD上遇到问题.即使有12Mb的限制也有OOM.这是日志:AFAIK设备有不同的堆大小限制.在我看来,系统应至少提供16MB,但我们的OOM为12mb.我的问题是:如何找出Android2的位图可

  2. android – 确定Activity的可用堆空间(防止OutOfMemoryException)

    我有一个Activity,它将一个文件从外部存储器加载到内存中,并在内存中进行一些解析/操作/等操作.在我加载它之前,我想猜测这样做是否会导致OutOfMemoryException并使Activity崩溃从上面提到的答案中,我提出:所以,问题:1)我疯了吗?2)如何从MemoryInfo对象中总计值来估计活动/任务的堆使用情况?3)Debug是否始终存在或仅在调试时?解决方法您可以参考此链接.对您面临的同一问题进行全面研究.OOMRESEACH

  3. 详解JavaScript栈内存与堆内存

    这篇文章主要介绍了JavaScript栈内存与堆内存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  4. windows – 监视桌面堆内存

    有没有办法弄清楚哪个应用程序正在耗尽所有桌面堆内存?有关“桌面堆”的说明,请参阅thisMSDNblog.编辑:如果您不知道“桌面堆内存”是什么,请不要回答.EDIT2:如果您不知道“桌面堆内存”是什么,请不要投票来关闭问题.根据这篇blog帖子,您应该查找用户对象.要查找错误的应用程序,可以在ProcessExplorer中配置USERObjects列.然后按用户对象降序排序.用户对象是所有GUI对象,如Windows,工具栏,图标,光标……

  5. ubuntu – 非堆内存泄漏JVM

    我在oraclejava虚拟机上运行的ubuntu服务器上设置了glassfishv4.0,并且jvm进程驻留内存大小(通过“top”命令获得)长大,直到jvm没有内存来创建新线程.是)我有的:>具有1GbRAM和1.4GHz处理器的VPS服务器(1Core)>UbuntuServer12.04>Java(TM)SE运行时环境(版本1.7.0_51-b13)>JavaHotSpot(TM)64位服

  6. java – 为什么堆内存使用量和加载类的数量不断增加?

    我正在使用JVMExplorer–linktoJVMExplorer来分析我的Spring应用程序.我有以下问题.>为什么’使用堆内存’即使在应用程序之后也会不断增加已启动并尚未收到任何请求?(图1)>为什么即使在垃圾收集之后和收到任何请求之前‘二手堆内存’不断增加?(图像2)>为什么在垃圾收集之后,通过向应用程序发送一些请求,加载类的数量正在增加?为什么它只是增加几乎所有东西?

  7. java – 如何减少VisualVM对堆使用的影响?

    更改轮询间隔可能不是更好,因为我对堆信息感兴趣.如果这不可能,我们可以排除用于VisualVM的数据吗?至少我想更专注于我的应用程序.运行代码VisualVM的堆监视器活动解决方法最简单的方法是减少轮询间隔.影响与获取数据的比率成正比.我所做的是使用yourkit,它可以在本机内存中执行所有操作,因此对堆没有影响.

  8. java – VisualVM连接到本地TomEE非常慢,不能进行堆转储

    我在MACOSX山狮上遇到了TomEE1.5.1和VisualVM1.7.0_09的一个非常奇怪的问题.TomEE加载一些webapp后.使用VisualVM连接本地TomEE进程需要很长时间,连接后gc按钮被禁用,我无法进行堆转储.VisualVM的日志显示一些错误..java_pid文件未在tmp文件夹中创建.但是如果我在启动它之后和加载任何webapps之前使用VisualVM连接

  9. 如何以编程方式增加java堆大小

    我有一个用于搜索文件的java桌面应用程序,很快就会达到默认的堆数限制.我将无法访问所有将安装的系统,所以我想增加应用程序本身的JVM堆大小.任何人可以帮助我如何在我的应用程序中以编程方式执行解决方法将-Xmx设置为一个gig并不意味着JVM将在启动时分配大量内存.JVM将只分配-xms,直到需要更多的堆空间.您是否需要保护用户免受操作系统的虚拟内存或内存分配失败的影响?

  10. java – 是否可以按池检查堆内存使用情况?

    我一直在努力优化一个有很多内存泄漏问题的程序.泄漏现在已经消失,但主要GC的偶尔运行仍然对PS老一代产生了良好的影响.我知道我可以通过运行时检查基本的整体内存信息,但是可以在程序中检查PSeden,PS幸存者和PSold的使用情况吗?解决方法这个article可以帮到你您可以编写自定义代码来分析内存和数据.输出将在表单中好read

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部