我的JOGL应用程序遇到加载时间过长的问题。直到昨天,当画布初始化突然开始整整一分钟时,一切正常。罪魁祸首是在本机 Platform.initSingleton()调用中的某个地方。
在干净的课程中使用以下代码
System.out.println("Start");
long t0 = System.currentTimeMillis();
AbstractGraphicsDevice device = GLProfile.getDefaultDevice();
long t1 = System.currentTimeMillis();
System.out.println((t1 - t0) + "ms " + device);
GLProfile profile = GLProfile.getDefault(device);
long t2 = System.currentTimeMillis();
System.out.println((t2 - t1) + "ms " + profile);
GLCapabilities capabilities = new GLCapabilities(profile);
long t3 = System.currentTimeMillis();
System.out.println((t3 - t2) + "ms " + capabilities);
System.out.println("Java version "+System.getProperty("java.version"));
将产生
61467ms WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[obj 0x59b9040a]]
0ms GLProfile[GL4bc/GL4bc.hw]
0ms GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]]
Java version 1.8.0_102 / 1.8.0_121 / 1.8.0_152
我试过
从调试打印看来,问题就在这里
IOUtil.testDirExec(): test-exe <C:\Users\User\AppData\Local\Temp\jogamp_exe_tst3558906654350516679.exe>, existingFile false, returned 0
IOUtil.testDirExec(): abs-path <C:\Users\User\AppData\Local\Temp>: res 0 -> true
IOUtil.testDirExec(): total 30033ms, create 16ms, fill 0ms, execute 30017ms
IOUtil.testDirImpl(tempX1): <C:\Users\User\AppData\Local\Temp>, create true, exec true: true
IOUtil.testDirExec(): test-exe <C:\Users\User\AppData\Local\Temp\jogamp_0000\jogamp_exe_tst3791240964894525069.exe>, existingFile false, returned 0
IOUtil.testDirExec(): abs-path <C:\Users\User\AppData\Local\Temp\jogamp_0000>: res 0 -> true
IOUtil.testDirExec(): total 30016ms, create 0ms, fill 0ms, execute 30016ms
我的想法已经不多了,而且我并不完全喜欢重新安装整个系统的想法,只是为了重新开始,可能会再次遇到它。
任何想法,经验都可能导致这种情况?我发现最有趣的是,它最终起作用,初始化过程只是延迟了。
使用oracle JDK 1.8.0_102 / 1.8.0_121 / 1.8.0_152(完全相同,121天前工作) 尝试过的驱动程序388.13x64(最新)和385.69x64(适用于不同的机器)
编辑:无法使用的机器有GTX 1070,它可以在GTX 960上运行。
答案 0 :(得分:1)
经过进一步的挖掘,我发现最好的解决方案是添加
-Djogamp.gluegen.UseTempJarCache=false
到JVM参数。
引用类似的问题(在问这个问题时出于某种原因我没有找到它)JOGL takes too long to start
马文·梅勒:
使用-Djogamp.gluegen.UseTempJarCache = false和 使用本地库而不是jar为我完成了窍门 (启动时间从15s +到500ms)。这不是一个真正的解决方案,因为 本机库不应该再使用了,但仍然足够 进行调试。
原始问题中的问题似乎与我的问题有所不同,因为我已修复了30 + 30秒,这是由于缓存访问超时而不是长时间运行防病毒检查引起的。