database_memory_dump_provider.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef SQL_DATABASE_MEMORY_DUMP_PROVIDER_H_
  5. #define SQL_DATABASE_MEMORY_DUMP_PROVIDER_H_
  6. #include <string>
  7. #include "base/memory/raw_ptr.h"
  8. #include "base/synchronization/lock.h"
  9. #include "base/thread_annotations.h"
  10. #include "base/trace_event/memory_dump_provider.h"
  11. struct sqlite3;
  12. namespace base::trace_event {
  13. struct MemoryDumpArgs;
  14. class ProcessMemoryDump;
  15. } // namespace base::trace_event
  16. namespace sql {
  17. class DatabaseMemoryDumpProvider
  18. : public base::trace_event::MemoryDumpProvider {
  19. public:
  20. DatabaseMemoryDumpProvider(sqlite3* db, const std::string& name);
  21. DatabaseMemoryDumpProvider(const DatabaseMemoryDumpProvider&) = delete;
  22. DatabaseMemoryDumpProvider& operator=(const DatabaseMemoryDumpProvider&) =
  23. delete;
  24. ~DatabaseMemoryDumpProvider() override;
  25. void ResetDatabase();
  26. // base::trace_event::MemoryDumpProvider implementation.
  27. bool OnMemoryDump(
  28. const base::trace_event::MemoryDumpArgs& args,
  29. base::trace_event::ProcessMemoryDump* process_memory_dump) override;
  30. // Reports memory usage into provided memory dump with the given |dump_name|.
  31. // Called by sql::Database when its owner asks it to report memory usage.
  32. bool ReportMemoryUsage(base::trace_event::ProcessMemoryDump* pmd,
  33. const std::string& dump_name);
  34. private:
  35. struct MemoryUsageResult {
  36. bool is_valid = false;
  37. int cache_size = 0;
  38. int schema_size = 0;
  39. int statement_size = 0;
  40. };
  41. MemoryUsageResult GetDbMemoryUsage();
  42. std::string FormatDumpName() const;
  43. base::Lock lock_;
  44. raw_ptr<sqlite3> db_ GUARDED_BY_CONTEXT(lock_); // not owned.
  45. const std::string connection_name_;
  46. };
  47. } // namespace sql
  48. #endif // SQL_DATABASE_MEMORY_DUMP_PROVIDER_H_