Sign in

Sebagai pengembang aplikasi platform Android, kita mengenal Android Profiler untuk menganalisis penggunaan resource oleh aplikasi Android. Kita mungkin jarang berinteraksi dengan process java yang berjalan di JVM. Namun, sedikit pengetahuan JVM profiling jugalah penting.

tagline diambil dari website

Contoh Kasus: Memory Leak di Robolectric

Baru-baru saja saya dan rekan kerja menghadapi masalah ketika mengubah sebagian AndroidTest menjadi test Robolectric. Test Robolectric akan stuck dengan pesan Out Of Memory ketika keseluruhan test dijalankan.

Pengunaannya Visual VM sangat sederhana, cukup jalankan berdampingan dengan process java yang mau di amati. Nantinya process java yang sedang berjalan dapat dilihat di Visual VM dengan real-time monitor.


Operator subscribeOn memiliki definisi yang sederhana tapi memiliki perilaku yang kadang tidak disadari pengguna. Sebagai contoh, lihat snippet di bawah:

Observable.create<Int> {
Thread(Runnable {
it.onNext(1)
it.onComplete()
}, "Thread A").start()
}
.subscribeOn(Schedulers.newThread())
.subscribe {
println("Subscriber on ${Thread.currentThread()}")
}

Di thread apakah subscriber berada?

a. new thread,

Subscriber on RxNewThreadScheduler-1

b. Thread A

Subscriber on Thread A

Operator subscribeOn

Mengutip reactive.io, subscribeOn menentukan operasi Observable dilakukan menggunakan scheduler apa. Scheduler bertugas menentukan di thread apa operasi dilakukan. Singkatnya, dengan subscribeOn, kita dapat menentukan di thread apa operasi observable dilakukan.

Tanpa subsribeOn, maka operasi akan dilakukan di thread di apa observable di subscribe (main thread


Dalam aplikasi mobile, sering kali kita temukan fitur menampilkan hasil pencarian ketika pengguna sedang mengetik kata kunci. Penerapan paling sederhana fitur ini adalah mengirimkan request pencarian setiap kali pengguna mengubah kata kunci.

Misalkan pengguna mencari “motogp”, maka:

  1. Pengguna mengetik “m”
  2. Aplikasi request pencarian “m”
  3. Pengguna mengetik “mo”
  4. Aplikasi request pencarian “mo”
  5. Pengguna mengetik “mot”
  6. Aplikasi request pencarian “mot”

…dan seterusnya.

Namun, dapat dibayangkan aplikasi akan mengirim banyak request yang tidak dibutuhkan karena pencarian sebelum “motogp” sebenarnya tidak dibutuhkan oleh pengguna. Server pun dirugikan karena harus memproses request yang tidak perlu.

Oleh karena itu, seringkali pengembang aplikasi akan menunda request pencarian…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store