Tag: memory leaks

关键的番石榴内存泄漏 – 需要解决方法

有没有办法解决缓存组件中的Google Guava r15 内存泄漏 (链接到错误报告) ? (不依赖于应用程序服务器可能会清理和/或考虑永远不会重新启动/重新部署Web应用程序)

Valgrind和Java

我想使用Valgrind 3.7.0在我的Java本机代码中查找内存泄漏。 我正在使用jdk1.6.0._29。 为此,我必须设置–trace-children = yes标志。 设置该标志,我不再可以在任何java应用程序上运行valgrind,甚至可以执行以下命令: valgrind –trace-children=yes –smc-check=all java -version 将收到错误消息: Error occurred during initialization of VM Unknown x64 processor: SSE2 not supported 我已经看过这个链接: https : //bugs.kde.org/show_bug.cgi?id = 249943 ,但它没用。 没有Valgrind或没有–trace-children标志运行程序就可以了。 有谁知道我能做什么?

了解Groovy / Grails类加载器泄漏

昨天我将我的第一个Grails(2.3.6)应用程序部署到开发服务器并开始监控它。 我刚刚得到一个自动监视器,说明CPU被固定在这台机器上,所以我连接到它。 我跑了top ,发现是我的Java应用程序的PID固定服务器。 我也注意到内存是40%。 几秒钟后,CPU停止固定,降至正常水平,内存恢复到~20%范围内。 经典主要GC。 在收集的时候,我做了堆转储。 在GC之后,我在JVisualVM中打开了转储,看到大部分内存都是为org.codehaus.groovy.runtime.metaclass.MetaMethodIndex.Entry类分配的。 总共有近250,000个这样的实例,占用了大约25 MB的内存。 我用Google搜索了这个课程并看了一下它是非常有帮助的Javadocs 。 所以我仍然不知道这门课的作用。 但谷歌搜索它还带来了大约十几篇涉及这个类的相关文章(其中一些是SO问题)和Grails / Groovy应用程序的PermGen / classloader泄漏。 虽然看起来我的应用程序确实用GC清理了这些250K实例,但仍然令人不安的是它有如此多的实例,并且GC将CPU固定超过5分钟。 我的问题: 什么是这个类,Groovy用它做什么? 有人可以向我解释这个答案吗? 为什么-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled帮助解决这个特殊问题? 为什么这个课程对PermGen特别麻烦?

使用JNI从C调用Java代码时内存泄漏

我有一个C程序,使用JNI在Java商店中存储一些对象。 (在有人问之前,使用java商店是一个需求,我必须在C中编写一个能够从该商店添加和检索对象的客户端)。 我制作了程序并尝试添加100000大小为1KB的对象。 但是在添加了50000个对象后,我得到了“内存不足”的消息(请注意,每当我无法使用NewStringUTF和NewByteArray函数分配新的字符串或字节数组时,我就会打印这些“内存不足”消息)。 那时我的应用程序只使用80MB的内存。 我不知道为什么这些方法返回NULL。 有什么我想念的东西。 此外,即使我正在发布为java创建的字节数组和字符串,内存也在不断增加。 这是源代码。 void create_jvm(void) { JavaVMInitArgs vm_args; JavaVMOption vm_options; vm_options.optionString = “-Djava.class.path=c:\\Store”; vm_args.version = JNI_VERSION_1_4; vm_args.nOptions = 1; vm_args.options = &vm_options; vm_args.ignoreUnrecognized = 0; JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); if(env != null) { j_store = (*env)->FindClass(env, “com/store”); if(j_store == null) { printf(“unable to find class. class name: JStore”); } } […]

我是否有JAXB类加载器泄漏

我在Glassfish上部署了一个应用程序。 随着时间的推移,加载的课程数量攀升至数百万,而我的permgen似乎也在增加。 为了帮助排除故障,我将以下内容添加到了我的jvm参数中。 -XX:+ PrintGCDetails -XX:+ TraceClassUnloading -XX:+ TraceClassLoading 现在,当观察输出时,我看到一遍又一遍地加载相同的类。 基本上每次调用Web服务时都会使用JAXB来处理xml。 [从JVM_DefineClass加载com.strikeiron.ZIPCodesInRadius $ JaxbAccessorF_userID] [从JVM_DefineClass加载com.strikeiron.ZIPCodesInRadius $ JaxbAccessorF_userID ] 这是否表明泄漏? 如果是这样我该如何解决?

如何使用visualvm查找内存泄漏

我怀疑我们的ActiveMQ连接桥有一个主要的内存泄漏 – 我们看到典型的内存泄漏模式(应用程序加载正常,如果长时间运行或在短时间内一次又一次地重新启动,则会减慢速度) 。 我查找了用于查找Java内存泄漏的现代最佳实践,许多开发人员似乎放弃了传统工具,如jhat / jmap,而不是新的(呃) jvisualvm 。 在启动此工具(并花了几个小时阅读其教程)后,我可以为CPU和内存获取探查器快照。 我现在只是陷入困境 – 如何分析这些快照来识别泄漏? 关于如何使用jvisualvm来生成快照,有很多关于如何使用jvisualvm生成快照的文档,但很少有关于如何真正理解它们的文档。 提前致谢。