java.lang.OutOfMemoryError:java堆空间-堆栈跟踪含义

java.lang.OutOfMemoryError:java堆空间-堆栈跟踪含义,java,memory-leaks,javafx,jvm,Java,Memory Leaks,Javafx,Jvm,我在一个长期存在的应用程序中有一条消息,java.lang.OutOfMemoryError:java堆空间 我想知道错误消息后显示的堆栈跟踪的含义;我能在阅读此跟踪时找到问题吗?堆栈跟踪的含义是什么 java.lang.OutOfMemoryError: Java heap space at java.nio.HeapIntBuffer.<init>(Unknown Source) at java.nio.IntBuffer.allocate(Unknown Sou

我在一个长期存在的应用程序中有一条消息,java.lang.OutOfMemoryError:java堆空间

我想知道错误消息后显示的堆栈跟踪的含义;我能在阅读此跟踪时找到问题吗?堆栈跟踪的含义是什么

java.lang.OutOfMemoryError: Java heap space
    at java.nio.HeapIntBuffer.<init>(Unknown Source)
    at java.nio.IntBuffer.allocate(Unknown Source)
    at com.sun.javafx.tk.quantum.UploadingPainter.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at com.sun.javafx.tk.RenderJob.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)java.lang.OutOfMemoryError: Java heap space
    at java.nio.HeapIntBuffer.<init>(Unknown Source)
    at java.nio.IntBuffer.allocate(Unknown Source)
    at com.sun.javafx.tk.quantum.UploadingPainter.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at com.sun.javafx.tk.RenderJob.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.lang.OutOfMemoryError: Java heap space
    at java.nio.HeapIntBuffer.<init>(Unknown Source)
    at java.nio.IntBuffer.allocate(Unknown Source)
    at com.sun.javafx.tk.quantum.UploadingPainter.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at com.sun.javafx.tk.RenderJob.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.lang.OutOfMemoryError: Java heap space
    at java.nio.HeapIntBuffer.<init>(Unknown Source)
    at java.nio.IntBuffer.allocate(Unknown Source)
    at com.sun.javafx.tk.quantum.UploadingPainter.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at com.sun.javafx.tk.RenderJob.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.lang.OutOfMemoryError:java堆空间
位于java.nio.HeapIntBuffer(未知源)
位于java.nio.IntBuffer.allocate(未知源)
位于com.sun.javafx.tk.quantum.UploadingPainter.run(未知源)
位于java.util.concurrent.Executors$RunnableAdapter.call(未知源)
位于java.util.concurrent.FutureTask.runAndReset(未知源)
位于com.sun.javafx.tk.RenderJob.run(未知源)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(未知源)
在java.lang.Thread.run(未知源代码)java.lang.OutOfMemoryError:java堆空间
位于java.nio.HeapIntBuffer(未知源)
位于java.nio.IntBuffer.allocate(未知源)
位于com.sun.javafx.tk.quantum.UploadingPainter.run(未知源)
位于java.util.concurrent.Executors$RunnableAdapter.call(未知源)
位于java.util.concurrent.FutureTask.runAndReset(未知源)
位于com.sun.javafx.tk.RenderJob.run(未知源)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(未知源)
位于java.lang.Thread.run(未知源)
java.lang.OutOfMemoryError:java堆空间
位于java.nio.HeapIntBuffer(未知源)
位于java.nio.IntBuffer.allocate(未知源)
位于com.sun.javafx.tk.quantum.UploadingPainter.run(未知源)
位于java.util.concurrent.Executors$RunnableAdapter.call(未知源)
位于java.util.concurrent.FutureTask.runAndReset(未知源)
位于com.sun.javafx.tk.RenderJob.run(未知源)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(未知源)
位于java.lang.Thread.run(未知源)
java.lang.OutOfMemoryError:java堆空间
位于java.nio.HeapIntBuffer(未知源)
位于java.nio.IntBuffer.allocate(未知源)
位于com.sun.javafx.tk.quantum.UploadingPainter.run(未知源)
位于java.util.concurrent.Executors$RunnableAdapter.call(未知源)
位于java.util.concurrent.FutureTask.runAndReset(未知源)
位于com.sun.javafx.tk.RenderJob.run(未知源)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(未知源)
位于java.lang.Thread.run(未知源)

谢谢。

不幸的是,堆栈只代表分配内存失败的调用,但这可能不是原因。您的程序中可能还有其他部分内存泄漏,或者您正在打开一个大文档,或者如果您的应用程序是基于web的,那么太多用户正在运行某个进程,并且他们正在使用所有内存。jvisualvm.exe(包含在jdk中)是分析内存的极好工具。

java.lang.OutOfMemoryError:java堆空间

Java应用程序允许使用有限的内存。此限制在应用程序启动期间指定。Java内存分为两个不同的区域

这些区域称为heapspacepermgen:

这些区域的大小是在Java虚拟机(JVM)启动期间通过指定-Xmx和-XX:MaxPermSize等参数设置的。您可以看到如何设置这些参数

如果未明确设置尺寸,将使用特定于平台的默认值

因此–当尝试向堆空间区域添加更多数据,但没有足够的空间时,将触发“java.lang.OutOfMemoryError:java heap space”错误

请注意,可能有大量的物理内存可用,但如果已达到此Java程序的堆大小限制,则会抛出“Java.lang.OutOfMemoryError:Java堆空间”错误

java.lang.OutOfMemoryError的原因:java堆空间

  • 使用率/数据量峰值
  • 该应用程序旨在处理 一定数量的用户或一定数量的数据。现在,当 用户数量或数据量突然激增,操作 在尖峰停止响应和 触发java.lang.OutOfMemoryError:java堆空间错误

  • 列表项

  • 特定类型的编程错误将导致应用程序不断消耗更多内存。每次使用应用程序的泄漏功能时,都会将一些对象留在Java堆空间中。随着时间的推移,泄漏的对象会消耗所有可用的Java堆空间,并触发已经熟悉的Java.lang.OutOfMemoryError:Java堆空间错误。

    您的应用程序占用了太多内存。如果您需要找到具体的问题,请使用Java ProfilerTake heap dumps并在堆转储分析器(如Eclipse内存分析器)中对其进行分析。感谢Rupesh,我正在尝试使用Java任务控制…我一直在使用Java任务控制。这是一个非常好的平台,可以看到我的应用程序中发生了什么。在这个图()中,我看到一个名为“QuantumRenderer-0”的线程表示分配过程压力很大。你知道这个线程的功能吗?QuantumRenderer与JavaFX有关,但分配的内存量并不一定意味着