草庐IT

java - JUnit 测试内存不足——如何增加堆大小?

我正在运行Junit测试,该测试会抛出异常OutOfMemory。测试在内部NetBeans6.9.X中启动。在分析它时我已经意识到HeapmaxSize是64M。我想增加这个但我找不到如何执行此操作。我已经尝试过右键单击项目->属性->运行在VM选项下我设置了-Xms300M但这没有用。有什么提示吗?提前致谢。 最佳答案 来自http://wiki.gephi.org/index.php/NetBeans_Tips#How_to_increase_Heap_Size_for_JUnit_test编辑您的project.proper

java - 如何改进应用程序以避免堆空间问题

我有一个应用程序,它大量使用许多自定义对象,这些对象是在方法内部创建的,在方法之外从不需要。整个结构(在我看来)是非常好的面向对象的,并使用服务、实用程序和DI模型。现在,当我运行第一个“大型”测试时,我很快遇到了OutOfMemoryExceptions。现在,我不只是想增加堆空间并完成它,因为我可以想象这不会解决问题,而是延迟它直到我的应用程序增长更多并遇到同样的问题。我正在寻找一些简单且易于实现的解决方案、技巧和片段,以帮助应用程序处理垃圾收集和堆空间,尤其是当涉及到许多与对象创建相关的循环时。诸如“不要在循环中创建对象,在循环之前创建它们并在循环中覆盖它”之类的东西。

java - 如何分析 .hprof 文件中的堆数据并使用它来减少内存泄漏?

最近,我在运行应用程序时遇到了java.lang.OutOfMemoryError异常。在一个这样的实例中,我能够使用jvisualvm获取堆转储。我可以使用NetBeans8.1IDE打开从堆转储中获取的.hprof堆转储文件,但我不知道如何分析数据转储。我想知道如何读取转储文件并采取纠正措施以从应用程序的角度减少内存不足异常。 最佳答案 有很多方法可以找到内存泄漏的根本原因,例如使用JProfiler等分析器并简单地应用thisgreatvideo中描述的内容.您还可以查看EclipseMemoryAnalyzer也称为MAT它

java - Sun JDK 能否在 JVM 崩溃时生成核心/堆转储文件?

当JVM崩溃时,是否有生成核心/堆转储文件的方法?由于这些文件通常非常有助于找出代码中的错误。 最佳答案 使用以下JVM选项:-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath="/tmp"JVM会将堆中的内容转储到指定目录中的文件中。请注意,这仅在抛出OutOfMemoryError时发生,因为如果JVM由于其他原因而崩溃,则实际上不需要转储。编辑:“boolean选项用-XX:+打开,用-XX:-关闭。”docs 关于java-SunJDK

java - 为什么在 Java 中使用堆内存

我们为什么要使用堆内存,我们可以使用栈内存吗?已编辑看完答案我又想到了一个问题1)除了堆和栈之外,还有其他内存类型吗?已编辑我遇到了字符串池,那是与堆或堆栈相关的内存吗? 最佳答案 好吧,如果您想使用对象,您必须使用堆。对象本质上是堆栈(或其他对象内部)指向堆中内存块的指针。与C++不同的是,您可以将对象放在堆栈或堆中,Java的处理方式不同。即使在C++中,将堆用于必须比创建它们的函数更长寿的对象也是一个好主意。您可能可以避免它,但您可能会发现自己遇到所有的性能问题复制构造函数。关于您的编辑:Isthereanyotherkind

java - Kafka Connect 堆空间不足

启动KafkaConnect(connect-standalone)后,我的任务在启动后立即失败:java.lang.OutOfMemoryError:Javaheapspaceatjava.nio.HeapByteBuffer.(HeapByteBuffer.java:57)atjava.nio.ByteBuffer.allocate(ByteBuffer.java:335)atorg.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:93)atorg.apac

java - VisualVM 连接到本地 TomEE 非常慢,无法进行堆转储

我在MACOSXmountainlion上遇到了TomEE1.5.1和VisualVM1.7.0_09的一个非常奇怪的问题。在TomEE加载一些webapp后。使用VisualVM连接本地TomEE进程需要很长时间,并且在连接后gc按钮被禁用,我无法进行堆转储。VisualVM的日志显示一些错误。com.sun.tools.attach.AttachNotSupportedException:Unabletoopensocketfile:targetprocessnotrespondingorHotSpotVMnotloadedatsun.tools.attach.BsdVirtual

java - 无法保留堆空间

我正在使用soapui5.0.0开源。我正在通过ant运行soapui测试用例以获取Junit报告build.xml:命令提示符错误:SoapUI:[exec]Error:CouldnotcreatetheJavaVirtualMachine.[exec]ErroroccurredduringinitializationofVMError:Afatalexceptionhasoccurred.Programwillexit.[exec][exec]Couldnotreserveenoughspaceforobjectheap[exec]Result:1testreport:[junit

java - 无法增加 Java 堆大小

我的Linux机器上有16GBRAM,并使用-Xmx4096m参数将最大Java堆内存设置为4GB。但是当我开始我的过程时出现以下错误。Invalidmaximumheapsize:-Xmx4096mThespecifiedsizeexceedsthemaximumrepresentablesize.CouldnotcreatetheJavavirtualmachine.当我将值设置为2048m时,它工作正常。是否需要更改任何其他配置参数以增加堆大小?提前致谢! 最佳答案 这不仅仅是关于你有多少RAM在32位机器上最大可用堆是162

java - 如何减少 VisualVM 对堆使用的影响?

我正在尝试优化我的应用程序的内存使用情况。不幸的是,使用-Dcom.sun.management.jmxremote运行我的应用程序并通过VisualVM连接它对堆使用有相当大的影响。一开始我以为是我应用的问题,后来写了一个很简单的程序确认确实是JMX的开销。以下是Activity图片。看完this,我开始明白这是由于VisualVM检索数据的方式,即通过连续轮询连接的应用程序。我通过查看VisualVM的内存采样器证实了这一点。RMITCPConnection(n)线程正在分配180kb/秒。我的问题是,有没有办法减少VisualVM对堆使用的影响?更改轮询间隔可能不太好,因为我对堆