如何使用应用程序避免 rgl 中闪亮服务器中的“内存不足”

问题描述 投票:0回答:1

我正在尝试运行 rgl闪亮应用程序,它在我的计算机上运行良好,但在www.shinyapps.io上崩溃。

我怀疑 1GB 内存不够,正如shinyapps.io日志告诉我的那样

Container event from container-8564782: oom (out of memory)

在一个rglwidget()中是6个triangle3d()相对复杂的对象。按钮创建这 6 个对象的新翻译并将其绘制在新的 rgl 对象中。我尝试将

lit=FALSE
放入对象中以节省内存,但它仍然崩溃(但并不总是如此)。 我还怀疑创建新对象时 rgl 对象不会从内存中删除。所以我尝试了 rglwidget 选项(
reuse=NA, webGLoptions = list(preserveDrawingBuffer = FALSE)
),但是部署测试效率不是很高...

  • 有没有办法用同样的1GB内存在本地测试应用程序?
  • 使用 rgl/shiny 时还有其他明显的方法来节省内存吗?

欢迎任何指点!

https://colomb.shinyapps.io/RANDOMstage/ 代码核心:

observe({ 
    input$randomise 
    #### Create a random position of each objects using translate3d, plot them using triangle3d.
    amessage = random_obj( objects= objects, position_tot =position_tot, messagesday=messagesday, colorpalette=palette("Okabe-Ito"))
    
    output$rglPlot <- renderRglwidget({
      
      createboden()
      
      view3d (theta = 0, phi = -88, zoom = 0.8, fov = 60)
      outputwidget = rglwidget(reuse=NA, webGLoptions = list(preserveDrawingBuffer = FALSE))
      
      
      outputwidget

    
    })
r shiny rgl
1个回答
0
投票

一个主要问题是物体的大小。由于对象是通过

readSTL()
读取的 STL 对象,因此我首先使用第三方软件最小化了对象的复杂性。 (https://3dless.com,对象从 6MB 增加到 100 kB)。 现在它使用更少的内存并在服务器上运行。

© www.soinside.com 2019 - 2024. All rights reserved.