/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Allocation tracking and reporting. */ #ifndef _DALVIK_ALLOCTRACKER #define _DALVIK_ALLOCTRACKER /* initialization */ bool dvmAllocTrackerStartup(void); void dvmAllocTrackerShutdown(void); struct AllocRecord; typedef struct AllocRecord AllocRecord; /* * Enable allocation tracking. Does nothing if tracking is already enabled. */ bool dvmEnableAllocTracker(void); /* * Disable allocation tracking. Does nothing if tracking is not enabled. */ void dvmDisableAllocTracker(void); /* * If allocation tracking is enabled, add a new entry to the set. */ #define dvmTrackAllocation(_clazz, _size) \ { \ if (gDvm.allocRecords != NULL) \ dvmDoTrackAllocation(_clazz, _size); \ } void dvmDoTrackAllocation(ClassObject* clazz, int size); /* * Generate a DDM packet with all of the tracked allocation data. * * On success, returns "true" with "*pData" and "*pDataLen" set. "*pData" * refers to newly-allocated storage that must be freed by the caller. */ bool dvmGenerateTrackedAllocationReport(u1** pData, size_t* pDataLen); /* * Dump the tracked allocations to the log file. If "enable" is set, this * will enable tracking if it's not already on. */ void dvmDumpTrackedAllocations(bool enable); #endif /*_DALVIK_ALLOCTRACKER*/