Wpis z mikrobloga

Robię sobie aplikację w #java i aktualnie zachowuje się jakby miała wycieki pamięci. Zużycie pamięci (RSS) wzrasta sobie regularnie podczas działania. Sprawdziłem w profilerze #netbeans i nie widać wycieków, aplikacja zajmuje niby średnio 20-40MB (w task managerze RSS np. 600MB, po starcie około 200MB), ilość żadnych obiektów nie rośnie podejrzanie. O co może chodzić w takim razie? #programowanie
źródło: comment_5EPAkIoePX4BZYTJoI2PnBZ4k0AXUGBP.jpg
  • 15
@psi-nos: domyślnie Java ma limity pamięci na 1/4 pamięci fizycznej. Więc póki może to sobie tą pamięć rezerwuje przy tworzeniu nowych obiektów. Najlepiej jak chcesz to przetestować to weź zmień ustawienia heapa na jakieś małe typu 128 albo 256 mb i uruchom aplikację. Szybko Ci poleci OutOfMemoryException jeżeli będziesz miał wycieki, albo zacznie wariować GC.
@strean: ze strumieniami wszystko w porządku (po zmianach używam strumienia tylko w jednej funkcji, z konstrukcją try-with-resources), masz może pomysł, co jeszcze mogłoby być powodem?
@pidgey: @strean: mam, niepoprawnie korzystałem ze sqlite (trochę się pospieszyłem), nie zamykając obiektów od zapytań i odpowiedzi, a z tego co ktoś gdzieś napisał

Every SQLite statement has some heap allocated to it. This is not garbage-collected heap. It can "leak" if you do not close things.
@strean: no tak, tylko nie spodziewałem się, ze trzeba "zamykać" obiekt zawierający wyniki zapytania sql, gdzie nawet nie używa się funkcji sugerujących "otwieranie" go. No ale moja wina, że nie doczytałem i korzystałem ;)