OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/render_thread_impl.h" | 5 #include "content/renderer/render_thread_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <map> | 9 #include <map> |
10 #include <utility> | 10 #include <utility> |
(...skipping 1659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1670 return; | 1670 return; |
1671 | 1671 |
1672 base::MemoryCoordinatorClientRegistry::GetInstance()->PurgeMemory(); | 1672 base::MemoryCoordinatorClientRegistry::GetInstance()->PurgeMemory(); |
1673 needs_to_record_first_active_paint_ = true; | 1673 needs_to_record_first_active_paint_ = true; |
1674 | 1674 |
1675 RendererMemoryMetrics memory_metrics; | 1675 RendererMemoryMetrics memory_metrics; |
1676 if (!GetRendererMemoryMetrics(&memory_metrics)) | 1676 if (!GetRendererMemoryMetrics(&memory_metrics)) |
1677 return; | 1677 return; |
1678 | 1678 |
1679 purge_and_suspend_memory_metrics_ = memory_metrics; | 1679 purge_and_suspend_memory_metrics_ = memory_metrics; |
1680 // record how many memory usage increases after purged. | |
1681 // Since RenderThreadImpl is kept alive while its render process is alive, | |
1682 // it is possible to use base::Unretained(this) here. | |
1683 GetRendererScheduler()->DefaultTaskRunner()->PostDelayedTask( | |
1684 FROM_HERE, | |
1685 base::Bind(&RenderThreadImpl::RecordPurgeAndSuspendMemoryGrowthMetrics, | |
1686 base::Unretained(this), "30min", process_foregrounded_count_), | |
1687 base::TimeDelta::FromMinutes(30)); | |
1688 GetRendererScheduler()->DefaultTaskRunner()->PostDelayedTask( | |
1689 FROM_HERE, | |
1690 base::Bind(&RenderThreadImpl::RecordPurgeAndSuspendMemoryGrowthMetrics, | |
1691 base::Unretained(this), "60min", process_foregrounded_count_), | |
1692 base::TimeDelta::FromMinutes(60)); | |
1693 GetRendererScheduler()->DefaultTaskRunner()->PostDelayedTask( | |
1694 FROM_HERE, | |
1695 base::Bind(&RenderThreadImpl::RecordPurgeAndSuspendMemoryGrowthMetrics, | |
1696 base::Unretained(this), "90min", process_foregrounded_count_), | |
1697 base::TimeDelta::FromMinutes(90)); | |
1698 } | 1680 } |
1699 | 1681 |
1700 // TODO(tasak): Replace the following GetMallocUsage() with memory-infra | 1682 // TODO(tasak): Replace the following GetMallocUsage() with memory-infra |
1701 // when it is possible to run memory-infra without tracing. | 1683 // when it is possible to run memory-infra without tracing. |
1702 #if defined(OS_WIN) | 1684 #if defined(OS_WIN) |
1703 namespace { | 1685 namespace { |
1704 | 1686 |
1705 static size_t GetMallocUsage() { | 1687 static size_t GetMallocUsage() { |
1706 // Iterate through whichever heap the CRT is using. | 1688 // Iterate through whichever heap the CRT is using. |
1707 HANDLE crt_heap = reinterpret_cast<HANDLE>(_get_heap_handle()); | 1689 HANDLE crt_heap = reinterpret_cast<HANDLE>(_get_heap_handle()); |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2458 } | 2440 } |
2459 } | 2441 } |
2460 | 2442 |
2461 void RenderThreadImpl::OnRendererInterfaceRequest( | 2443 void RenderThreadImpl::OnRendererInterfaceRequest( |
2462 mojom::RendererAssociatedRequest request) { | 2444 mojom::RendererAssociatedRequest request) { |
2463 DCHECK(!renderer_binding_.is_bound()); | 2445 DCHECK(!renderer_binding_.is_bound()); |
2464 renderer_binding_.Bind(std::move(request)); | 2446 renderer_binding_.Bind(std::move(request)); |
2465 } | 2447 } |
2466 | 2448 |
2467 } // namespace content | 2449 } // namespace content |
OLD | NEW |