найти доступную внутреннюю память во время выполнения из кода - PullRequest
0 голосов
/ 23 мая 2011

я должен найти доступную внутреннюю память во время выполнения из кода, потому что, когда я уменьшаю внутреннюю память телефона до менее 100 КБ, операции sqlite выдают исключение SQLiteDiskIOException при каждой операции с БД из-за недостатка дискового пространства

есть идеи?

clahav

Ответы [ 3 ]

3 голосов
/ 23 мая 2011

В таком случае использование встроенной БД кажется излишним, поскольку у вас мало оперативной памяти и, как следствие, слабая среда.Вместо этого я бы предпочел преобладающий слой, такой как

Вы потеряете некоторыепо сравнению с JDBC (транзакция, SQL), но потребление памяти может быть значительно снижено.

1 голос
/ 23 мая 2011

Вызов Runtime.getRuntime().freeMemory() дает оценку объема свободной памяти.Однако это не особенно полезная мера, поскольку есть большая вероятность, что вы сможете выделить больше памяти, чем указано в отчете.Когда вы пытаетесь выделить больше памяти, чем в настоящее время свободно, JVM автоматически запустит GC в попытке освободить достаточно места для вашего выделения, и это обычно будет успешным.

Вы можете запросить GC для запуска "прямо сейчас", вызвав System.gc(), но это, как правило, плохая идея с точки зрения производительности.GC наиболее эффективен (с точки зрения времени, затрачиваемого на возвращаемый байт), если вы просто позволяете JVM запускать GC, когда это необходимо.Единственный случай, когда может быть целесообразно запустить ГХ, - это если вы знаете, что у вас есть свободные циклы ЦП в определенной точке, и вы хотите смягчить паузы ГХ.


В вашем конкретном случае яЯ не уверен, какое преимущество имеет знание того, сколько свободной памяти есть.Почему бы вам просто не попробовать операции sqlite и отловить / разобраться с исключениями?Или увеличить размер кучи?Или отследить, что происходит с утечкой памяти или используется неэффективно?

0 голосов
/ 23 мая 2011
Runtime rt=Runtime.getRuntime();
rt.freeMemory()

вызов System.gc () может увеличить доступную свободную память

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...