RPGMakerID
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Komunitas RPG Maker Indonesia
 
IndeksIndeks  Latest imagesLatest images  PencarianPencarian  PendaftaranPendaftaran  Login  
Per 2016, RMID pindah ke RMID Discord (Invite link dihapus untuk mencegah spambot -Theo @ 2019). Posting sudah tidak bisa dilakukan lagi.
Mohon maaf atas ketidaknyamanannya dan mohon kerjasamanya.

 

 Hindari Crash VXAce Karena Memory Leak & Object Undisposed

Go down 
4 posters
PengirimMessage
TroyZ
Novice
Novice
TroyZ


Level 5
Posts : 193
Thanked : 5
Engine : RMVX Ace
Skill : Intermediate
Type : Scripter

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-23, 09:27

Hindari Crash VXAce Karena Memory Leak & Object Undisposed


Original Link : http://13th-info.blogspot.com/2013/12/menghindari-crash-vxace-karena-memory.html

Hindari Crash VXAce Karena Memory Leak & Object Undisposed 16iyukm

Siapa yg sering ketemu crash dengan bentuk error seperti itu? Sedikit orang? Banyak orang? Penyebab crash seperti itu ditentukan oleh banyak faktor, seperti VXAce yang diinstal bukan versi officialnya (hasil crackan, tapi yg ini jarang seh), atau karena kesalahan dari program itu sendiri (seperti script yang tidak diprogram dengan benar). Disini saya akan mengajarkan kalian sekaligus memberi informasi tentang crash di VXAce dengan bentuk error seperti itu dan bagaimana solusi yg tepat untuk mengakalinya. Tapi yang saya ajarkan kali ini hanya crash karena kesalahan script yang tidak diprogram dengan benar.

Main Crash Reason

Script yang tidak diprogram dengan baik oleh scripternya, lama kelamaan akan melahirkan crash di VXAce, dan terkadang scripter itu sendiri tidak tau dimana letak kesalahannya karena VXAce tidak berhasil mendetailnya (contohnya seperti error diatas, apakah kalian sendiri mengerti kesalahan sebenarnya dari sisi program atau dari sisi scriptnya). Salah satu crash yang cukup umum dan biasanya scripter luput dari penyebab ini (dan sayapun juga salah satunya yang luput) adalah OBJEK SPRITE YANG TIDAK DIDISPOSE DENGAN BENAR. Objek Sprite tidak sama dengan Window yang ketika keluar dari scene tersebut/viewportnya hilang maka objeknya juga ikut hilang. Objek Sprite HARUS PUNYA METODE DISPOSE UNTUK DIRINYA SENDIRI (biasanya kalo didalam class ada def dispose atau ga def terminate, disitulah tempat yang tepat untuk meletakkan fungsi dispose untuk objek Sprite). Perlu diketahui bahwa objek Sprite tetap tinggal di memory ketika Sprite tidak didispose dengan benar walaupun secara ketampakan sudah tidak ada lagi dilayar. Hal ini bisa membuat adanya penumpukan objek yang tidak digunakan lagi di memory (Garbage Collector sepertinya gagal dibagian ini) yang bisa menuju ke crashnya Game.exe itu sendiri.

Identifying The Crash Reason

Alasan kenapa VXAce bisa crash seperti itu sudah ditau. Sekarang darimana asal crash tersebut? Untungnya ada seorang scripter disana yang berhasil membuat script untuk mendetail bagian mana saja dari script yang kita pake yang bakal melahirkan crash tersebut. Scriptnya adalah Graphical Object Global Reference VX ACE yang bisa didapatkan disini. Kita akan menggunakan script tersebut sebagai debug lognya biar kita tau dimana letak kesalahan scriptnya.

Preparation

Sekarang saatnya ujicoba script yang bisa mengarahkan kita ke crash seperti itu. Kita akan coba dengan script saya sendiri TroyZ - Loading [VXAce] Version 1.0Ternyata script saya sendiri saya tidak program dengan benar.  :hammer:  #oh_god_why

Execution

Seperti biasa, sekarang coba jalankan sebuah project dengan script saya berada didalamnya. Fungsikan script tersebut.
Hindari Crash VXAce Karena Memory Leak & Object Undisposed Screenshot+-+12_23_2013+,+3_28_17+AM

Yah masih berjalan dengan normal projectnya kan? Sekarang saatnya saya memasang script debug tersebut. Pasang script debug tersebut dibawah dari script loading milik saya.

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Screenshot+-+12_23_2013+,+3_30_16+AM

Sekarang saatnya testplay.
Hindari Crash VXAce Karena Memory Leak & Object Undisposed Screenshot+-+12_23_2013+,+3_31_37+AM


Quote :
Hey padahal loadingnya sudah selesai, tapi gambarnya tetap ada disana.
Ya itu salah satu kesalahan saya dalam menulis script ini. Saat saya kembali ke scene sebelumnya, saya lupa untuk mendispose objek Sprite yang ada di scene tersebut  :doh:  (bodohnya saya ini). Nah sekarang solusinya, liat di file gobj.txt yang ada di project kamu (file ini muncul ketika menggunakan script debug tersebut, isinya adalah log tentang apa2 saja yang bakal membuat Game.exe crash).
Hindari Crash VXAce Karena Memory Leak & Object Undisposed Screenshot+-+12_23_2013+,+3_35_33+AM+copy

Lihatlah line script yang didetail di gobj.txt . Ada create_background, draw_loading_text, draw_loading_base, draw_loading_bar. Semua line yang disebutkan itu adalah line dimana objek Sprite dibuat, dan ketika keluar dari scene, objek Sprite tersebut tidak didispose. Sekarang saatnya mengedit script tersebut agar objek Sprite saat keluar dari scene bisa terdispose dengan benar. Buka script editor, tambahkan baris seperti ini sebelum end dari scene loading.

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Screenshot+-+12_23_2013+,+3_48_46+AM

@text, @background_sprite, @load_base, @load_bar, itu semua adalah variabel yang menyimpan objek Sprite. Sekarang testplay lagi project kamu, tapi jangan lupa sebelum testplay, hapus dulu file gobj.txt yang tadi sudah ada. Jika file gobj.txt yang dihapus tadi sudah tidak muncul lagi saat testplay, berarti kamu sudah berhasil menggagalkan crash di VXAce yang disebabkan kesalahan script yang tidak diprogram dengan baik (sebenarnya kesalahan saya seh, kan saya yang buat scriptnya sampe gaje kaek gitu  :hammer:  :hammer:  :kebakar:  :kebakar: ).

Conclusion

Ini cuma salah satu dari sekian banyaknya penyebab crash di Game.exe milik VXAce yang berhasil digagalkan. Script debug milik Mithran tersebut sebenarnya punya metodenya sendiri untuk menggagalkan crash, tapi dari beberapa kesempatan script debug tersebut tidak berhasil karena penyebab crash bukan berasal dari script. Bisa diliat di FAQ yang ada di postnya di RMW.
Quote :
Q: Game.exe crashes for me constantly and this didn't help!
A: As explained, this only prevents Game.exe crashes caused by the specific set of circumstances outlined. Crashes caused by memory faults or other errors may still remain, but if there is an in-game reason for it (read: crashes happen after x set of actions are taken with a fair degree of consistency, or across several computers) feel free to leave a post here.
Jadi sebagai scripter, penggunaan objek Sprite harus benar-benar dikondisikan dengan baik (jangan seperti saya, kembali scene malah Sprite ditinggalin  :doh: ). Belajarlah dari kesalahan, dari sanalah kalian akan menemukan pengalaman yang akan mengajarimu lebih.

Sekian artikel dari saya, semoga bermanfaat.
Kembali Ke Atas Go down
http://13th-info.blogspot.com
TheoAllen
♫ RMID Rebel ♫
♫ RMID Rebel ♫
TheoAllen


Kosong
Posts : 4935
Thanked : 63

Trophies
Awards:




Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-23, 09:36

* Moved to RMVXAce

Question!
Gw udah coba tapi lognya ko ga keluar itu kenapa ya? :lol:
Kembali Ke Atas Go down
http://theodoric-allen-altar.webs.com/
TroyZ
Novice
Novice
TroyZ


Level 5
Posts : 193
Thanked : 5
Engine : RMVX Ace
Skill : Intermediate
Type : Scripter

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-23, 09:48

:v itu masang scriptnya Mithran, pasang persis sebelum Main :swt: 
btw ini debug dari project ente yg pernah ente kasih ke ane  :3 https://www.dropbox.com/s/njsijhttgokwllp/gobj.txt
Kembali Ke Atas Go down
http://13th-info.blogspot.com
Heartbreak61
Novice
Novice
avatar


Level 5
Posts : 177
Thanked : 4
Engine : RMVX Ace
Skill : Very Beginner
Type : Event Designer

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-23, 14:16

selain Sprite sama Bitmap apa lagi yang bikin leak kk? :hmm:
Kembali Ke Atas Go down
TroyZ
Novice
Novice
TroyZ


Level 5
Posts : 193
Thanked : 5
Engine : RMVX Ace
Skill : Intermediate
Type : Scripter

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-23, 15:13

ya rata2 yg bikin memory leak sampe crash begitu biasanya objek yang hilang namun ternyata masih ada, dan objek tsb tersimpan di memory, tdk pernah terpakai selama di memory. kalo soal script dgn proses banyak pun sebenarnya masih ambigu juga seh, soalnya kalo ga salah pernah ingat kalo setiap proses standar di script itu memakan 4 byte dari memory (kaek pernah liat di video tutorial rgss3, lupa juga seh) :hmm: :hmm:

ada juga line yg sia2 yg sengaja/tdk disengaja diselipkan di script dan membuat script bekerja lebih keras lagi. coba deh :
Code:
for i in 0..9999
Sprite.new
end

selipkan disalah satu script yg sudah ada, dan liat file gobj.txt bakal mendebug memory leak sebanyak 9999X  :shocked:
Kembali Ke Atas Go down
http://13th-info.blogspot.com
Heartbreak61
Novice
Novice
avatar


Level 5
Posts : 177
Thanked : 4
Engine : RMVX Ace
Skill : Very Beginner
Type : Event Designer

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-23, 22:30

Itu 9999 kali dibikin tapi ga didispose, jelas aja bikin leak XD

Kalo

for i in 0..9999
x = Sprite.new
x.dispose
end

Mungkin cuma bikin lag tapi ga menimbulkan leak << ga penting banget

Well, jadi sementara kesimpulannya yang bikin leak cuma Sprite sama Bitmap yang ga di dispose ya? :hmm:
Kembali Ke Atas Go down
TroyZ
Novice
Novice
TroyZ


Level 5
Posts : 193
Thanked : 5
Engine : RMVX Ace
Skill : Intermediate
Type : Scripter

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-23, 22:43

hahaha, testing purpose only  XD  XD 

ya sejauh ini yg bisa ninggal di memory dan ga hilang kalo ga dihilangin itu kan Sprite doank :hmm:mungkin rgss punya objek lain yg tetap tinggal di memory dan terkadang Garbage Collector tidak bisa bekerja untuk objek ini (ga tau ya, hanya hipotesis =)))

jadi untuk sementara ini pemakaian objek Sprite aja yg pinter2 diakali biar ga leak ampe crash gitu  :thumbup: pengalaman lho di battle engine symphony, hanya karena shadow battler yg kaga kedispose dengan benar, Game.exe sampe crash, RMW ama sitenya yami juga ikut2an ngeributin hal serupa  :ckck:
Kembali Ke Atas Go down
http://13th-info.blogspot.com
LowlingLife
Administrator
Administrator
LowlingLife


Kosong
Posts : 2000
Thanked : 25
Engine : Multi-Engine User

Trophies
Awards:

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-25, 18:53

Maaf hanya sekedar kasih tahu. Saya juga pernah lihat ada error kalau misalkan kebanyakan object/sprite yang tidak di-dispose sehingga membuat script jadi hang. Nah intinya kita harus hati-hati nge-check object/sprite yang sudah di-define.
Kembali Ke Atas Go down
TroyZ
Novice
Novice
TroyZ


Level 5
Posts : 193
Thanked : 5
Engine : RMVX Ace
Skill : Intermediate
Type : Scripter

Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-25, 19:36

LowlingLife wrote:
Maaf hanya sekedar kasih tahu. Saya juga pernah lihat ada error kalau misalkan kebanyakan object/sprite yang tidak di-dispose sehingga membuat script jadi hang. Nah intinya kita harus hati-hati nge-check object/sprite yang sudah di-define. 
object/sprite, berarti object laen bisa donk. hmm apa aja object yg bekerja seperti sprite (harus didispose manual dulu baru mau ilang)? :hmm: dan juga, itu hangnya cuman error script doank, ato udah sampe menghasilkan crash di Game.exe nya? :hmm:
Kembali Ke Atas Go down
http://13th-info.blogspot.com
TheoAllen
♫ RMID Rebel ♫
♫ RMID Rebel ♫
TheoAllen


Kosong
Posts : 4935
Thanked : 63

Trophies
Awards:




Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty2013-12-25, 19:48

Mampir kesini aja deh http://forums.rpgmakerweb.com/index.php?/topic/20738-remove-bitmap-dispose-in-animation-is-it-a-good-idea/

Mungkin itu maksudnya memory leak :hmm:
Kembali Ke Atas Go down
http://theodoric-allen-altar.webs.com/
Sponsored content





Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty
PostSubyek: Re: Hindari Crash VXAce Karena Memory Leak & Object Undisposed   Hindari Crash VXAce Karena Memory Leak & Object Undisposed Empty

Kembali Ke Atas Go down
 
Hindari Crash VXAce Karena Memory Leak & Object Undisposed
Kembali Ke Atas 
Halaman 1 dari 1
 Similar topics
-
» [Xp] Mencegah Crash karena File yang ilang
» Dorong Object
» [XP] Move Object and Switch
» Karena bingung...
» Script GTBS Crash?

Permissions in this forum:Anda tidak dapat menjawab topik
RPGMakerID :: Engines :: RMVX Ace-
Navigasi: