Запрос:
SELECT qb.dy as yourday, COALESCE(count(yourcolumn), 0) as yourcount from yourtable qa
right join (
select curdate() as dy union
select DATE_SUB(curdate(), INTERVAL 1 day) as dy union
select DATE_SUB(curdate(), INTERVAL 2 day) as dy union
select DATE_SUB(curdate(), INTERVAL 3 day) as dy union
select DATE_SUB(curdate(), INTERVAL 4 day) as dy union
select DATE_SUB(curdate(), INTERVAL 5 day) as dy union
select DATE_SUB(curdate(), INTERVAL 6 day) as dy
) as qb
on qa.dates = qb.dy
and qa.dates > DATE_SUB(curdate(), INTERVAL 7 day)
order by qb.dy asc;
, и результат:
+------------+-----------+
| yourday | yourcount |
+------------+-----------+
| 2015-06-24 | 274339 |
| 2015-06-25 | 0 |
| 2015-06-26 | 0 |
| 2015-06-27 | 0 |
| 2015-06-28 | 134703 |
| 2015-06-29 | 87613 |
| 2015-06-30 | 0 |
+------------+-----------+
Вы можете использовать используя оператор . После этого ссылка на объект будет удалена, и сборщик мусора сможет собрать его позже.
У вас нет. Это то, что сборщик мусора делает автоматически - в основном, когда среде выполнения .NET требуется память, она обходит и удаляет объекты, которые больше не используются.
Что вам нужно сделать, чтобы это сработало, так это удалить все ссылки на объект.
В вашем случае ....
obj1 = null;
в конце, тогда объект больше не ссылается и может быть востребован из сборщика мусора.
Вы можете проверить http://en.wikipedia.org/wiki/Garbage_collection_ (computer_science) для получения дополнительной информации.
Обратите внимание, что если объект имеет ссылки на неуправляемые ресурсы (например, открытые файлы и т. Д.), Он должен реализовывать шаблон Disposable (интерфейс IDisposable), и вы должны явно освободить эти ссылки, когда вам больше не нужен объект.
Как указал Крис out C # выполняет большую часть сборки мусора за вас. Примеры, в которых вам может потребоваться сборка мусора, связаны с реализацией интерфейса IDisposable
и с использованием WeakReference
.
См. http://msdn.microsoft. .com / en-us / library / system.idisposable.aspx и http://msdn.microsoft.com/en-us/library/system.idisposable.aspx для получения дополнительной информации.
Вы перестаете ссылаться на них и позволяете сборщику мусора принимать их.
Если вы хотите освободить объект, добавьте следующую строку:
obj1 = null;
Сборщик мусора, если он свободен, чтобы удалить объект (при условии, что нет другого указателя на объект, который поддерживает его .)
Необязательно. Вы просто перестаете ссылаться на них, и сборщик мусора (в какой-то момент) освободит их для вас.
Вы должны реализовать IDisposable
для типов, использующих неуправляемые ресурсы, и заключить любой экземпляр, реализующий IDisposable
в оператор using
.
Как уже упоминалось, вам не нужно явно освобождать их; однако кое-что, о чем не упоминалось, заключается в том, что, хотя это правда, что встроенный сборщик мусора освободит их за вас, нет гарантии, КОГДА сборщик мусора освободит его.
Все, что вы знаете, это то, что когда он выпадает из области видимости, он МОЖЕТ быть очищен сборщиком мусора и на каком-то этапе будет.
Вы не должны. Сборщик мусора среды выполнения придет и очистит его для вас. Вот почему вы используете C#, а не неуправляемый C++ в первую очередь :)
Это не рекомендуется, но если вам действительно нужно, вы можете принудительно выполнить сборку мусора с помощью:
GC.Collect();