java中可以用getBytes()length获取字符串占用内容的大小,原理是java中任何字符都采用Unicode编码,所以衡量占用内存大小采用占用的字节数。
举例如下:
public class TestStringSize {
public static final void main(String[] args) {
Systemoutprintln("占用内存大小:"+"学java"getBytes()length);
}
}
输出结果:
占用内存大小:6 byte
{
public static void main(String[] args)
{
Systemoutprintln("\n\t\t==========如何获取对象地址==========\n");
init();
}//初始化!
private static void init()
{
//演示:创建对象!
Dog d1=new Dog();
Dog d2=new Dog("白色");
d1show();
d2show();
Systemoutprintln("\n对象内存地址-->>对象所属类型:"+d1+"<<--这就是对象内存中哈希值16进制的地址");
Systemoutprintln("对象内存地址-->>对象所属类型:"+d2+"<<--这就是对象内存中哈希值16进制的地址\n");
Systemoutprintln("d1对象所属类:"+d1getClass());
Systemoutprintln("d1对象所属地址十进制:"+d1hashCode()+"转成16进制就和上面一样了\n");
Systemoutprintln("d2对象所属类:"+d2getClass());
Systemoutprintln("d2对象所属地址十进制:"+d2hashCode()+"转成16进制就和上面一样了\n");
}
}
//测试类,小狗!
class Dog
{
String color="黑色";
Dog(){}
Dog(String color){thiscolor=color;}
void show()
{
Systemoutprintln("这是一个"+color+"的小狗");
}
}
这个问题太不好回答了。
但是又很好回答。
比如:
String str1=new String("我爱我家");
这个时候已经在内存中分配一个内存块用来存储这个字符串数据了。
所以呢你取的时候也是很简单的。
直接读取str1就ok了。
你所说的取内存数据是想问什么呢?
java中不建议直接获取字符串内存地址,因为java不像c语言,获取内存地址是C语言的强项,java的弱项。但是java内存地址还是有一个应用场景,就是判断两个字符串内存地址是否相等来判断是否是同一个对象,用双等号“==”来比较的。参考代码如下:
public class Test01 {
/
@param args
/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1="abc";
String str2=new String("abc");
Systemoutprintln(str1 == str2);//输出false
}
}
获取内存地址?这个不太现实的。
对于Java程序员来说,并不必显示地对内存进行管理,一切都是交给Java虚拟机去做的,而且,你也不一定做得比Java虚拟机来得专业。
在你没有运行java程序之前,没有内存一说,只有运行以后,程序会被java虚拟机给编译,运行,在编译运行的过程中,程序员自定义的变量、类、方法、接口等等都会被放到不同的内存区域中,这时你只能通过调试获取变量的值(此时的值是被放在内存中的)。在调试过程中,看见一个类或者方法有很长的一串字符,那就是内存地址,因为它不能像变量一样,看见具体的值。
所以,你获取不到内存地址的
希望我能帮到你
以上就是关于在java中如何获得某个实例占用多少内存全部的内容,包括:在java中如何获得某个实例占用多少内存、如何获得java对象的内存地址、JAVA程序如何从内存中获取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)