diff --git a/src/image_writer.cc b/src/image_writer.cc
index 7240c3d..beb7366 100644
--- a/src/image_writer.cc
+++ b/src/image_writer.cc
@@ -48,7 +48,7 @@
   DCHECK(arg != NULL);
   ImageWriter* image_writer = reinterpret_cast<ImageWriter*>(arg);
   image_writer->SetImageOffset(obj, image_writer->image_top_);
-  image_writer->image_top_ += RoundUp(obj->Size(), 8);  // 64-bit alignment
+  image_writer->image_top_ += RoundUp(obj->SizeOf(), 8);  // 64-bit alignment
   DCHECK_LT(image_writer->image_top_, image_writer->image_->GetLength());
 }
 
@@ -77,7 +77,7 @@
   size_t offset = image_writer->GetImageOffset(obj);
   byte* dst = image_writer->image_->GetAddress() + offset;
   byte* src = reinterpret_cast<byte*>(obj);
-  size_t n = obj->Size();
+  size_t n = obj->SizeOf();
   DCHECK_LT(offset + n, image_writer->image_->GetLength());
   memcpy(dst, src, n);
   Object* copy = reinterpret_cast<Object*>(dst);
diff --git a/src/object.h b/src/object.h
index 5110992..6fe2ecf 100644
--- a/src/object.h
+++ b/src/object.h
@@ -129,7 +129,7 @@
 
   bool InstanceOf(const Class* klass) const;
 
-  size_t Size() const;
+  size_t SizeOf() const;
 
   void MonitorEnter() {
     monitor_->Enter();
@@ -603,6 +603,7 @@
                      size_t component_size) {
     return sizeof(Array) + component_count * component_size;
   }
+
   static Array* Alloc(Class* array_class,
                       size_t component_count,
                       size_t component_size) {
@@ -614,7 +615,7 @@
     return array;
   }
 
-  size_t Size() const;
+  size_t SizeOf() const;
 
   int32_t GetLength() const {
     return length_;
@@ -1174,14 +1175,14 @@
   return klass_->IsArray();
 }
 
-inline size_t Object::Size() const {
+inline size_t Object::SizeOf() const {
   if (IsArray()) {
-    return AsArray()->Size();
+    return AsArray()->SizeOf();
   }
   return klass_->object_size_;
 }
 
-inline size_t Array::Size() const {
+inline size_t Array::SizeOf() const {
   return Size(GetLength(), klass_->GetComponentSize());
 }
 
