0

有没有人遇到过这个问题?

我正在尝试使用 BouncyCastle 在 Android 中创建证书,但是一旦我添加了 BouncyCastle Provider Jar,我就会遇到 Java 堆空间问题,Eclipse 崩溃并出现 OutOfMemory 错误。

我所做的只是跟随,这类似于充气城堡中的示例代码,

public static X509Certificate createMasterCert(
    PublicKey pubKey,
    PrivateKey privKey)
    throws Exception
{
    //
    // signers name
    //
    String issuer = "C=AU, O=The Legion of the Bouncy Castle, OU=Bouncy Primary Certificate";

    //
    // subjects name - the same as we are self signed.
    //
    String subject = "C=AU, O=The Legion of the Bouncy Castle, OU=Bouncy Primary Certificate";

    //
    // create the certificate - version 1
    //
    X509v1CertificateBuilder v1CertBuilder = new JcaX509v1CertificateBuilder(
        new X500Name(issuer),
        BigInteger.valueOf(1),
        new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30),
        new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 30)),
        new X500Name(subject),
        pubKey);

    X509CertificateHolder cert = v1CertBuilder.build(new JcaContentSignerBuilder("SHA1withRSA").setProvider(BC).build(privKey));

    return new JcaX509CertificateConverter().setProvider(BC).getCertificate(cert);
}
4

4 回答 4

0

要增加堆空间,请执行以下步骤:

  1. 在包资源管理器中右键单击您的项目并转到运行方式并单击运行配置并找到您的类的名称。
  2. 在标有 VM 参数的框中的参数选项卡(主选项卡旁边)中写入-mx256m
于 2012-10-12T04:37:49.873 回答
0

我怀疑程序有问题,例如长循环、高内存需求等等。不知道 jar 所以无法评论。

如果要运行增加堆的 eclipse,请运行以下命令来启动 eclipse:

    eclipse [normal arguments] -vmargs -Xmx512M

根据您的需要设置大小。

或者,您可以在根目录eclipse.ini下打开eclipse并更新 vmargs 参数:

  .......
  -vmargs
  -Xms40m
  -Xmx512m <---Update this value

完成后,重新启动eclipse。

于 2012-10-12T04:48:18.930 回答
0

调整

--launcher.XXMaxPermSize
256m

--launcher.XXMaxPermSize
512m
于 2012-10-12T05:06:55.823 回答
0

如果这段代码是在 Android 中执行的,那么增加 Eclipse 的堆大小对您没有任何帮助,因为它根本与它无关。Android 应用程序的堆大小是固定的,您无法增加它(无论如何在 Honeycomb 之前都不会)。你用的是什么版本的安卓?此外,BouncyCastle 库是 Android 的一部分,因此即使您将它们添加到项目中,它也会使用系统库,它们略有不同,这可能会导致微妙(而不是那么微妙)的错误。如果您想在 Honeycomb (3.0) 之前的平台上使用 BC,您需要更改包名称或包含已经为您执行此操作的 Spongy Castle。

于 2012-10-12T08:45:54.510 回答