有没有人遇到过这个问题?
我正在尝试使用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);
}
答案 0 :(得分:0)
要增加堆空间,请执行以下步骤:
-mx256m
答案 1 :(得分:0)
我怀疑程序有问题,例如长循环,高内存需要等等。没有意识到jar无法发表评论。
如果你想用增加的堆运行eclipse,请运行以下命令启动eclipse:
eclipse [normal arguments] -vmargs -Xmx512M
根据您的需要设置尺寸。
或者,您可以在eclipse.ini
根目录下打开eclipse
并更新vmargs参数:
.......
-vmargs
-Xms40m
-Xmx512m <---Update this value
完成后,重启日食。
答案 2 :(得分:0)
修改
--launcher.XXMaxPermSize
256m
到
--launcher.XXMaxPermSize
512m
答案 3 :(得分:0)
如果在Android中执行此代码,增加Eclipse的堆大小将对您无效,因为它与它无关。 Android应用程序的堆大小是固定的,你不能增加它(不管怎样在Honeycomb之前)。您使用的是哪个版本的Android?另外,BouncyCastle库是Android的一部分,所以即使你将它们添加到你的项目中,它也会使用系统的库,它们略有不同,这可能导致细微(而不是那么微妙)的错误。如果您想在预蜂窝(3.0)平台上使用BC,您需要更改包名称或包括已经为您执行此操作的Spongy Castle。