草庐IT

Java:非堆内存分析

我们的非堆内存一直在增长。所以我们必须每3天重新启动我们的jee(java8)-webapp(如您在此处的屏幕截图中所见:screenshotfromnon-heap-andheap-memory)我已经尝试找出是什么填满了那个非堆。但是我找不到任何工具来创建非堆转储。您知道我如何对此进行调查以找出哪些元素在不断增长吗?java版本javaversion"1.8.0_102"Java(TM)SERuntimeEnvironment(build1.8.0_102-b14)JavaHotSpot(TM)64-BitServerVM(build25.102-b14,mixedmode)tom

java - 在生产系统上详分割析 Tomcat 堆

使用JMX控制台分析了一个在tomcat中运行的轻负载Web应用程序后,发现“PSOldGen”增长缓慢但稳定。它从200MB开始,并以大约80MB/小时的速度增长。CPU不是问题,它平均以0-1%的速度运行,但它会在某处泄漏内存,因此在部署后几天会变得不稳定。我如何找出在堆上分配了哪些对象?您知道有什么好的教程或工具吗? 最佳答案 你可以试试jmap,JDKDevelopmentTools之一.您可以使用jhat使用您的网络浏览器查看堆转储的输出。参见thisanswer以获得简短的解释。这经常出现,因此在SO中搜索这些工具应该会

java - 动态增加java堆空间

我编写了一个java程序,用于在具有不同数量处理器的不同机器上测试几个多线程算法的速度。在某些机器上,合并排序*会失败,因为它需要相当大的堆空间才能处理非常大的数组。我可以在运行程序之前自行轻松更改Java堆空间,但我觉得更可靠、更简单的方法是从程序本身内部完成此任务。有没有办法在java程序运行期间从虚拟机请求/获得更多堆空间?注意:我知道我可以用像java-Xmx1gProgram这样的脚本来执行程序;我对这个主题的好奇在一定程度上是学术性的。*我的实现不会在线合并。它需要O(n)额外的内存。 最佳答案 据我所知,没有办法在运行

Java 任务控制堆配置文件

我正在使用Java7u40随附的新JavaMissionControlProfiler,但我无法分析分配和收集对象统计信息。无论我做什么,我都无法在内存->对象统计窗口中看到任何统计信息。以下命令开始收集:jcmdJFR.startduration=60ssettings=profilefilename=alloc-prof.jfrJavaMissionControldocumentation没有提到启用对象分析的任何特定选项。我尝试创建自己的配置文件并设置:truetrue但仍然没有收集到对象统计数据。 最佳答案 使用Missio

java - ConcurrentLinkedQueue$Node 在 remove() 之后保留在堆中

我有一个写入和读取ConcurrentLinkedQueue的多线程应用程序,它在概念上用于支持列表/表中的条目。我最初为此使用了ConcurrentHashMap,效果很好。一项新要求需要跟踪进入的订单条目,因此可以根据某些条件以最旧的顺序删除它们。ConcurrentLinkedQueue似乎是一个不错的选择,而且在功能上它运行良好。可配置数量的条目保存在内存中,当达到限制时提供新条目时,将以最早的优先顺序搜索队列以查找可以删除的条目。某些条目不会被系统删除并等待客户端交互。似乎正在发生的事情是我在发生的队列前面有一个条目,比如100K条目之前。该队列似乎配置的条目数量有限(siz

java - 频繁的主要 gc 但不是空闲堆?

运行几个小时后,我的http服务器开始频繁进行majorgc,但没有释放任何堆。多次majorgc之后,promotionfailed和concurrentmodefailure发生,然后heap被释放。我的gc日志如下:{HeapbeforeGCinvocations=7172(full720):parnewgenerationtotal737280K,used667492K[0x000000076b800000,0x000000079d800000,0x000000079d800000)edenspace655360K,100%used[0x000000076b800000,0x0

java - 发送无效的xml时如何修复websphere上的java堆空间

当我向websphere服务器上的web服务发送无效的xml时,我得到了java堆空间:与元素something一切正常异常(exception):java.lang.OutOfMemoryError:Javaheapspaceatcom.ibm.ws.webservices.utils.BAIS.create(BAIS.java:74)~[com.ibm.ws.runtime.jar:?]atcom.ibm.ws.webservices.utils.WebServicesInputSource.getBAISContent(WebServicesInputSource.java:74

java - 增加 sqlworkbench/J 的堆大小

我们如何增加SqlWorkbench/J的堆大小?我尝试了不同的选项,但大多数都说要执行以下命令:-java-Xmx4g-jarsqlworkbench.jar即使在http://www.sql-workbench.net/manual/install.html#install-increase-memory,它为我提供了这个解决方案。现在,我正在使用macbook。所以我只有sqlworkbench.app文件。我没有用于sqlworkbench的任何.ini文件或.jar文件。那么,如何增加内存大小呢? 最佳答案 我在Macbo

java - 在 Apache Karaf 下设置 Java 堆大小

如果这是重复的,我深表歉意,但我似乎无法在任何地方找到这个答案。使用ApacheKaraf时增加最大Java堆大小的最佳方法是什么?目前,我修改了karaf.bat文件中的以下行:setDEFAULT_JAVA_OPTS=-server-XmxM.我觉得修改bat文件不是最好的解决办法。此外,似乎没有任何配置文件可以放置它。谢谢 最佳答案 (至少)在karaf2.2.10中:如果通过bin/start运行karaf正如FordGuo指出的那样,可以在bin/setenv文件中配置内存值:exportJAVA_MIN_MEM=256M

glassfish 中的 Java 堆空间错误

我使用的是全新安装的Glassfish,几乎没有自定义设置。我有一个消息驱动Bean(ObjectUpdateMDB),它监听一个主题,然后更新它在数据库中接收到的对象。有很多对象正在更新。运行一段时间后,我得到了这个异常:SEVERE:JTS5031:Exception[org.omg.CORBA.INTERNAL:vmcid:0x0minorcode:0completed:Maybe]onResource[rollback]operation.SEVERE:MDB00049:Message-drivenbean[Persistence:ObjectUpdateMDB]:Except