/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * 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. */ package org.dashbuilder.dataset.impl; import java.math.BigDecimal; import java.sql.Timestamp; import java.util.Date; import java.util.HashMap; import java.util.Map; public class MemSizeEstimator { public static int sizeOfDate = 20; public static int sizeOfTimestamp = 24; public static int sizeOfBoolean = 9; public static int sizeOfByte = 9; public static int sizeOfShort = 10; public static int sizeOfInteger = 12; public static int sizeOfLong = 16; public static int sizeOfFloat = 12; public static int sizeOfDouble = 16; public static int sizeOfBigDecimal = 32; static Map<Class,Integer> sizeOfMap = new HashMap<Class, Integer>(); static { sizeOfMap.put(Date.class, sizeOfDate); sizeOfMap.put(Timestamp.class, sizeOfTimestamp); sizeOfMap.put(Boolean.class, sizeOfBoolean); sizeOfMap.put(Byte.class, sizeOfByte); sizeOfMap.put(Short.class, sizeOfShort); sizeOfMap.put(Integer.class, sizeOfInteger); sizeOfMap.put(Long.class, sizeOfLong); sizeOfMap.put(Float.class, sizeOfFloat); sizeOfMap.put(Double.class, sizeOfDouble); sizeOfMap.put(BigDecimal.class, sizeOfBigDecimal); } public static int sizeOf(Class clazz) { Integer size = sizeOfMap.get(clazz); return size != null ? size : 0; } public static int sizeOf(Object o) { if (o == null) return 0; return sizeOf(o.getClass()); } public static int sizeOfString(String s) { if (s == null) return 0; return 40 + s.length()*2; } }