在这里,我发现了一个问题,即同一类的实例大小在不同版本的 JVM 中不一样(在1.6.0_21中为40 ,在1.6.0_31中为24)。即使,代码是相同的。你以前有没有人遇到过类似的问题?或者你有什么建议吗?
JDK 1.6.0_21
# java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)
# java obj.ObjectSize &
# jps | grep ObjectSize
27251 ObjectSize
# jmap -histo 27251 | grep US_ASCII
145: 1 40 sun.nio.cs.US_ASCII
JDK 1.6.0_31
# java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
# java obj.ObjectSize &
# jps | grep ObjectSize
26645 ObjectSize
# jmap -histo 26645 | grep US_ASCII
161: 1 24 sun.nio.cs.US_ASCII
对象大小.java
package obj;
import java.util.concurrent.TimeUnit;
import sun.nio.cs.US_ASCII;
public class ObjectSize {
public static void main(String[] args) {
US_ASCII as = new US_ASCII();
System.out.println(as);
try {
TimeUnit.MINUTES.sleep(5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}