diff --git a/vm/alloc/Alloc.h b/vm/alloc/Alloc.h
index 6637cd6..c215fc2 100644
--- a/vm/alloc/Alloc.h
+++ b/vm/alloc/Alloc.h
@@ -25,6 +25,7 @@
 enum {
     ALLOC_DEFAULT = 0x00,
     ALLOC_DONT_TRACK = 0x01,  /* don't add to internal tracking list */
+    ALLOC_NON_MOVING = 0x02,
 };
 
 /*
diff --git a/vm/native/dalvik_system_VMRuntime.cpp b/vm/native/dalvik_system_VMRuntime.cpp
index b704e3e..7345386 100644
--- a/vm/native/dalvik_system_VMRuntime.cpp
+++ b/vm/native/dalvik_system_VMRuntime.cpp
@@ -113,7 +113,7 @@
     ClassObject* arrayClass = dvmFindArrayClassForElement(elementClass);
     ArrayObject* newArray = dvmAllocArrayByClass(arrayClass,
                                                  length,
-                                                 ALLOC_DEFAULT);
+                                                 ALLOC_NON_MOVING);
     if (newArray == NULL) {
         assert(dvmCheckException(dvmThreadSelf()));
         RETURN_VOID();
diff --git a/vm/oo/Array.cpp b/vm/oo/Array.cpp
index e186edf..baf9d3c 100644
--- a/vm/oo/Array.cpp
+++ b/vm/oo/Array.cpp
@@ -363,7 +363,7 @@
      * Array classes are simple enough that we don't need to do a full
      * link step.
      */
-    newClass = (ClassObject*) dvmMalloc(sizeof(*newClass), ALLOC_DEFAULT);
+    newClass = (ClassObject*) dvmMalloc(sizeof(*newClass), ALLOC_NON_MOVING);
     if (newClass == NULL)
         return NULL;
     DVM_OBJECT_INIT(&newClass->obj, gDvm.classJavaLangClass);
diff --git a/vm/oo/Class.cpp b/vm/oo/Class.cpp
index 2311f8a..15511c2 100644
--- a/vm/oo/Class.cpp
+++ b/vm/oo/Class.cpp
@@ -341,7 +341,7 @@
     const char* descriptor = dexGetPrimitiveTypeDescriptor(primitiveType);
     assert(descriptor != NULL);
 
-    ClassObject* newClass = (ClassObject*) dvmMalloc(sizeof(*newClass), ALLOC_DEFAULT);
+    ClassObject* newClass = (ClassObject*) dvmMalloc(sizeof(*newClass), ALLOC_NON_MOVING);
     if (newClass == NULL) {
         return false;
     }
@@ -375,7 +375,7 @@
      * because it is an instance of itself.
      */
     ClassObject* clazz = (ClassObject*)
-        dvmMalloc(classObjectSize(CLASS_SFIELD_SLOTS), ALLOC_DEFAULT);
+        dvmMalloc(classObjectSize(CLASS_SFIELD_SLOTS), ALLOC_NON_MOVING);
     if (clazz == NULL) {
         return false;
     }
@@ -1766,7 +1766,7 @@
         newClass = gDvm.classJavaLangClass;
     } else {
         size_t size = classObjectSize(pHeader->staticFieldsSize);
-        newClass = (ClassObject*) dvmMalloc(size, ALLOC_DEFAULT);
+        newClass = (ClassObject*) dvmMalloc(size, ALLOC_NON_MOVING);
     }
     if (newClass == NULL)
         return NULL;
diff --git a/vm/reflect/Proxy.cpp b/vm/reflect/Proxy.cpp
index 59d3d47..6953930 100644
--- a/vm/reflect/Proxy.cpp
+++ b/vm/reflect/Proxy.cpp
@@ -105,7 +105,7 @@
     size_t newClassSize =
         sizeof(ClassObject) + kProxySFieldCount * sizeof(StaticField);
     ClassObject* newClass =
-        (ClassObject*) dvmMalloc(newClassSize, ALLOC_DEFAULT);
+        (ClassObject*) dvmMalloc(newClassSize, ALLOC_NON_MOVING);
     if (newClass == NULL)
         goto bail;
     DVM_OBJECT_INIT(&newClass->obj, gDvm.classJavaLangClass);
