首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的培训师说Java创建了380个对象来运行一个简单的java program.Is,对吗?

我的培训师说Java创建了380个对象来运行一个简单的java program.Is,对吗?
EN

Stack Overflow用户
提问于 2012-07-24 16:40:46
回答 3查看 181关注 0票数 4

一位在我们公司接受过培训的java培训师声称,我们创建了380个对象来运行最简单的"Hello World“程序。这是正确的吗?我如何验证它?

EN

回答 3

Stack Overflow用户

发布于 2012-07-24 16:43:17

这是正确的吗?

很有可能。there是Java每次启动的大量基础设施,并且/或者必须在那里。

如何验证?

内存分析器。

这并不重要-大多数都是非常小的或基线的基础设施元素。你现在发现的是Java并不是什么都不做的。谁在乎?大多数Java程序都不是那么简单。

票数 8
EN

Stack Overflow用户

发布于 2012-07-24 16:45:51

编辑

为了了解JVM所做的工作,您可以查看为执行一个简单程序而加载的类的数量。这些将是已加载的类,而不是实例(为此,您将需要分析您的程序),但这是获得一般概念的一种快速方法。

编写一个简单的HelloWorld类(即使有一个空的main方法)

代码语言:javascript
复制
public class HelloWorld {

    public static void main(String [] arguments) {
    }

}

编译它并使用-verbose选项执行它。JVM将告诉您装入了哪些类

代码语言:javascript
复制
$ javac HelloWorld.java
$ java -verbose HelloWorld
[Opened /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]
[Loaded java.lang.Object from    /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]
[Loaded java.io.Serializable from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]
[Loaded java.lang.Comparable from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]
[Loaded java.lang.CharSequence from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]
[Loaded java.lang.String from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]

如果您在Unix环境中,则可以使用grepwc计算行数

代码语言:javascript
复制
$ java -verbose HelloWorld | grep Loaded | wc -l
588
票数 4
EN

Stack Overflow用户

发布于 2012-07-24 16:44:23

标准库中的类中的初始化代码创建对象。例如,您可以使用VisualVM验证这一点。

没有弄清楚的是,这是创建的对象总数,还是保留的对象总数(不符合GC条件),这是非常重要的差异。如果这是创建的对象总数,那么我只能说这是一个真正优化的初始化过程的标志。380个短暂的对象分配实际上什么都不是。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11627180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档