增加java输出文件大小

时间:2018-03-14 09:34:40

标签: java size

我想创建一些不同大小(100kb-500kb)的测试java文件。在那种情况下,我正在修改简单的hello世界。

程序永远不会被执行所以在类中创建对象不会被调用。

我想创建一些像C / C ++语言一样的常量,这些常量将保存在文件中,而不是保存在运行时内存中

我正在使用midlet库,不知怎的,我无法在类外创建静态/最终变量。

package HelloWorld;

import javax.microedition.midlet.*;

//cant create consts here?

public class HelloWorld extends MIDlet {


public HelloWorld() {
    System.out.println("Constructor"); 
}

public void startApp() throws MIDletStateChangeException {
    System.out.println("startApp");
    System.out.println("\nHello World\n");
    destroyApp(true);   
}

public void pauseApp() {
    System.out.println("pauseApp()");
}

public void destroyApp(boolean cond) {
    System.out.println("destroyApp(" + cond + ")");
    notifyDestroyed();
}

//public String[][][] toppings = new String[200000][200000][20000];
}

什么是增加java构建输出文件大小的简单有效方法?输出格式为.jrc

2 个答案:

答案 0 :(得分:1)

我假设您首先要谈的是“.class”文件的大小。

  

HellWorld类构造函数中的那个多向量的初始化会做到吗?

实际上,没有。该初始化实际上是由单个字节码指令执行的。不管阵列的大小。您可以通过向数组添加维度来使“.class”更大,但不足以生成大型“.class”文件。

  

程序启动后是否调用了它?

是的它是......但这不会影响类文件的大小。

现在,如果你在讨论运行程序所需的内存量,那么的数组会占用大量内存:

  • 一个String[][][]数组,第一维有200,000个元素
  • 200,000 String[][]个数组,第二维有200,000个元素
  • 40,000,000,000 String[]个数组,第三维包含20,000个元素。

这是一个巨大的记忆。但内存仅在运行时分配。如此多的内存使您的程序无法在典型的笔记本电脑/台式机上运行。

(这让我觉得这不是你要问的!)

正如我所说,“。class”文件很小,因为使用单个字节码指令执行分配...有3个操作数:每个维度一个。

  

什么是增加java构建输出文件大小的简单有效方法?

包含大量方法或构造函数的类。

具有许多不同文字字符串的类(最好是大字)。

但是,请注意,类文件格式对这些内容施加了一些限制;见https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.11

  

我正在使用midlet库,不知怎的,我无法在类外创建静态/最终变量。

那是因为Java不允许它。必须在类(或接口)内声明所有变量。 Java在许多方面与C / C ++不同,这只是其中之一。

我建议您花点时间阅读Java教程或教科书,而不是根据C和C ++知识猜测语言是如何工作的。

答案 1 :(得分:0)

你所做的就是声明一个数组,你没有分配任何值,所以你仍然在写一个“null”。

查看Arrays.fill()文档。还可以尝试提出一个问题,其中包含一些可以使用的解决方案的代码,因为这有点模糊,而且你也误解了creating objects在java中是如何工作的。