java获取变量,对象等的内存地址

java获取变量,对象等的内存地址,第1张

获取内存地址?这个不太现实的。

对于Java程序员来说,并不必显示地对内存进行管理,一切都是交给Java虚拟机去做的,而且,你也不一定做得比Java虚拟机来得专业。

在你没有运行java程序之前,没有内存一说,只有运行以后,程序会被java虚拟机给编译,运行,在编译运行的过程中,程序员自定义的变量、类、方法、接口等等都会被放到不同的内存区域中,这时你只能通过调试获取变量的值(此时的值是被放在内存中的)。在调试过程中,看见一个类或者方法有很长的一串字符,那就是内存地址,因为它不能像变量一样,看见具体的值。

所以,你获取不到内存地址的

希望我能帮到你

RuntimemaxMemory(); //最大JVM内存(就是你配置给JVM的值)

RuntimetotalMemory();//JVM可支配的最大内存值

RuntimefreeMemory();//剩余内存空间

另外给一个例子:

Runtime run = RuntimegetRuntime();

long max = runmaxMemory();

long total = runtotalMemory();

long free = runfreeMemory();

long usable = max - total + free;

Systemoutprintln("最大内存 = " + max);

Systemoutprintln("已分配内存 = " + total);

Systemoutprintln("已分配内存中的剩余空间 = " + free);

Systemoutprintln("最大可用内存 = " + usable);

程序使用:javalangRuntime 包,不需要特别下载和导入

内存中占用多少字节是不会让你轻而易举获取的。如果想要知道一个数据在内存中的大小,建议你看看JVM相关规范的书,对象在内存的大小不是不能计算,因为这不仅仅是一个数据,数据存放相关的信息,以及此数据可能调用的方法,以及此数据本身的类型信息,以及数据在内存中的堆内存中的索引信息,以及存放这个索引的内存信息,以及你这个数据类型中引用的常量池中的信息。。。等等等不可能让你准确知道。因为内存是不断更新的,垃圾会被不断回收,回收算法的执行,数据在内存中的位置也会发生相应的移动。严格的说指定一个类型的数据除了基本类型外,其他都是不连续的。如果楼主用过C或者C++的比如说链表的结构,现在的问题就好比你想知道一个具体链表占了多大内存。呵呵,水平有限,不能准确回答你要的结果。

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

}

}

这个问题太不好回答了。

但是又很好回答。

比如:

String

str1=new

String("我爱我家");

这个时候已经在内存中分配一个内存块用来存储这个字符串数据了。

所以呢你取的时候也是很简单的。

直接读取str1就ok了。

你所说的取内存数据是想问什么呢?

以上就是关于java获取变量,对象等的内存地址全部的内容,包括:java获取变量,对象等的内存地址、java程序怎么测量 所使用的内存大小 ,、java怎么获得数据在内存中长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9605225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存