Unable to allocate direct buffer memory
Ty Young
youngty1997 at gmail.com
Thu May 7 21:26:36 UTC 2020
On 5/7/20 3:44 PM, Kevin Rushforth wrote:
> This suggests that there might be a memory leak (possibly in uploading
> painter which I see you are using). Is this easily reproducible?
Easily? No. I seem to get either(AKA never both) only after hours of
having the application running. Nothing seems to break either, making it
very strange. I don't remember getting these exceptions in JavaFX 13,
just warnings about texture size(which I think others have reported here
too).
Although, I should say, I'm using Project Panama's Foreign Memory Access
builds and those can corrupt memory if used incorrectly. That said,
given that the texture size issue was reported here before in JavaFX 13
and before IIRC, I'm not so sure that is the issue.
>
> As for the other exception:
>
>> java.lang.RuntimeException: Requested texture dimensions (32767x1137)
>> require dimensions (0x1137) that exceed maximum texture size (16384)
>
> Are you really trying to draw into a texture that big? If not, then
> either the error message is printing the wrong sizes (which is quite
> possible) or else something is causing a larger than expected size to
> be used.
Uh, I use Integer.MAX_VALUE for prefered width/height, not
Short.MAX_VALUE. I don't know where 32767(Short.MAX_VALUE) is coming
from, I never explicitly request those dimensions.
Could the screen being locked and the screen being off have to do with this?
>
> -- Kevin
>
>
> On 5/7/2020 11:51 AM, Ty Young wrote:
>>
>> On 5/6/20 12:39 PM, Ty Young wrote:
>>> After hours of running my JavaFX application I start getting this
>>> error spammed in console:
>>>
>>>
>>> java.lang.OutOfMemoryError: Cannot reserve 149024316 bytes of direct
>>> buffer memory (allocated: 149066725, limit: 209715200)
>>> at java.base/java.nio.Bits.reserveMemory(Bits.java:178)
>>> at
>>> java.base/java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:120)
>>> at
>>> java.base/java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:329)
>>> at
>>> javafx.graphics/com.sun.prism.impl.BufferUtil.newByteBuffer(BufferUtil.java:90)
>>> at
>>> javafx.graphics/com.sun.prism.impl.BufferUtil.newIntBuffer(BufferUtil.java:121)
>>> at
>>> javafx.graphics/com.sun.prism.impl.QueuedPixelSource.getUnusedPixels(QueuedPixelSource.java:155)
>>> at
>>> javafx.graphics/com.sun.javafx.tk.quantum.UploadingPainter.run(UploadingPainter.java:156)
>>> at
>>> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>>> at
>>> java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
>>> at
>>> javafx.graphics/com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
>>> at
>>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
>>> at
>>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
>>> at
>>> javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
>>> at java.base/java.lang.Thread.run(Thread.java:832)
>>>
>>>
>>> Ironically every single error is about allocating the exact same
>>> amount of bytes.
>>
>>
>> Anything on this? I'm also getting:
>>
>>
>> java.lang.RuntimeException: Requested texture dimensions (32767x1137)
>> require dimensions (0x1137) that exceed maximum texture size (16384)
>> at
>> javafx.graphics/com.sun.prism.es2.ES2RTTexture.create(ES2RTTexture.java:220)
>> at
>> javafx.graphics/com.sun.prism.es2.ES2ResourceFactory.createRTTexture(ES2ResourceFactory.java:165)
>> at
>> javafx.graphics/com.sun.javafx.tk.quantum.UploadingPainter.run(UploadingPainter.java:124)
>> at
>> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>> at
>> java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
>> at
>> javafx.graphics/com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
>> at
>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
>> at
>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
>> at
>> javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
>> at java.base/java.lang.Thread.run(Thread.java:832)
>>
>>
>> spammed alternatively.
>>
>
More information about the openjfx-dev
mailing list