在我開始我對我缺乏在我的代碼評論道歉。我目前正在製作一個OBJ文件加載器(在java中)。儘管我的代碼按照小文件的預期工作,但當文件變大時(例如,我正在嘗試加載一個包含25,958行的obj文件),我的整個系統崩潰了。我最近將整個項目從C++中遷移出來,可以快速加載這個模型。我在調試器旁邊使用了一個分析器來確定整個過程在哪裏崩潰了我的系統。我注意到了一些事情;首先,它是在啓動過程中懸掛的;第二,我的堆幾乎完全使用了(我用了堆的90%左右)。 我的代碼可以在這裏找到: http://pastebin.com/VjN0pzyi 我很好奇,我可以採用優化這個代碼的方法。優化OBJ文件(3D模型)加載在Java
0
A
回答
0
當你的內存真的很低,一切都變慢了很多。我想你應該提高你的編程技巧,像
startChar = line[i].toCharArray()[k];
可能沒有得到優化,以
startChar = line[i].charAt(k);
自動的。也許實習你的字符串可以節省大量的內存,試試String.intern或Guava Interner。
的熱點喜歡短的方法,使重構。代碼因爲它很難閱讀,我認爲,考慮到它的大小沒有優化完成!
0
我知道這是一個老問題,但我想在我的兩分錢扔在你的性能問題。你說你的代碼不僅運行緩慢,而且佔用了堆的90%。我認爲說90%是誇張的誇張,但這仍然讓我指出Java遊戲開發的最大缺陷。 Java不支持值類型,比如結構體。這意味着爲了獲得速度,你需要避免OOP,因爲每當你爲你的加載器實例化一個類時,它就被分配到堆上。然後,您必須始終等待GC啓動以消除混亂,並留下裝載程序創建的實例。現在以C#這樣的語言爲例如何創建真實語言。 C#完全支持結構。你可以用他們替換你的每一個裝載機類。然後將面,組,頂點,正常,類視爲值類型;當堆棧展開時它們被刪除。如果您需要使用一兩個課程,則不會生成垃圾,或者至少非常少。
在我看來,不使用Java進行遊戲開發。在發現C#之前,我使用了它多年。嚴格地說,在這裏,但Java是一種可怕的語言;我永遠不會再使用它。
相關問題
- 1. 在windows phone 7中加載3d模型.obj文件
- 2. 如何在Three.js中加載.obj 3D模型?
- 3. 如何使用obj文件加載Qt creator 2.1中的3D模型和紋理
- 4. opengl obj模型加載
- 5. LIBGDX 3d .obj加載程序
- 6. 加載/刷新3D模型
- 7. UWP 3D模型加載
- 8. 在Opencv中加載YML文件 - 優化
- 9. 使用Resource文件夾和Mysql在Unity中加載3D模型
- 10. 在Java中優化文件加密
- 11. android opengl從.obj文件中繪製3d模型
- 12. 在cocos3d中加載3d模型
- 13. 在OpenGL程序中加載3D模型
- 14. 在openGLES中加載3D模型IOS
- 15. 在OpenGL中加載3d模型
- 16. 在iOS中加載3D模型
- 17. 3D投影的3D模型的優化旋轉
- 18. 關於.obj 3d模型格式和VBO
- 19. 從Blender加載.obj文件
- 20. Three.js從緩存中加載obj模型
- 21. 將OBJ模型加載到M3G中
- 22. OpenGL加載OBJ模型,紋理失真
- 23. 如何在Vuforia中使用.obj和.mtl文件加載3d模型增強現實iOS sdk
- 24. OpenGL Java獲取3D OBJ模型的屬性
- 25. 與3D obj模型的Java碰撞檢測
- 26. 加載3d .obj文件,並添加背景圖像在android動態壁紙?
- 27. IE7 Javascript文件加載 - 優化
- 28. 加載Require.js最優化文件
- 29. PHPExcel大xlsm文件加載優化
- 30. 在three.js中加載OBJ文件