`
xiongmao0304
  • 浏览: 2864 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

eclipse打包内存溢出

阅读更多

在某个项目组通过eclipse打包模块项目时频繁出现内存溢出问题,项目组采用32位win7操作系统,内存4G,单看机器配置已经算是高配了,在eclipse.ini中将PermSize调到很大仍然报错。 报错信息显示不能创建本地线程native thread。通过两种方法解决了问题:

1、调整ini文件中的jvm内存参数。

调整的关键为:

MaxPermSize PermSize值相等

Xms Xmx值相等

2、调整打包代码。

跟踪调试发现打包内存溢出的触发点为:导出插件项目时,会生成build.xml文件,其中target中大量使用unzip命令,该命令会调用操作系统的native method方法,如果jvm参数中设置的堆+Perm区和Native空间不平衡就很容易报内存溢出问题。

 

 

<target name="@dot.nestedJars">
		<mkdir dir="${buildDirectory}/nestedJars/com.sgcc.uap.integrate.isc_1.5.1.v201308131540"/>
		<unzip src="I:/UAP Studio1.5.1/sguap-server/WEB-INF/repository/platform/Version1.0.0/infrastructure/com.sgcc.uap.integrate.isc_1.5.1.v201308131540.jar" dest="${buildDirectory}/nestedJars/com.sgcc.uap.integrate.isc_1.5.1.v201308131540" overwrite="false">
			<patternset includes="lib/isc_sso_agent.jar"/>
		</unzip>
		。。。。。。。。
</target>
<target name="@dot" depends="init,@dot.nestedJars" unless="@dot" description="Create jar: mpm_sinprjpre_pm @dot.">

 

通过给项目组编写手工build.xml脚本发现,javac编译时,classpath中没有unzip出的lib包也没有问题,于是修改了生成build.xml文件的类,将unziptarget以及对其的依赖删除。修改的类为org.eclipse.pde.build插件中pdebuiler.jar内的ModelBuildScriptGenerator类的generateExtractNestedJars方法和generateCompilationTarget方法。

private List generateExtractNestedJars(List classpath, CompiledEntry entry) {
		List extracted = new ArrayList(classpath.size());
		for (Iterator iterator = classpath.iterator(); iterator.hasNext();) {
			ClasspathElement element = (ClasspathElement) iterator.next();

			if (element.getSubPath() == null)
				extracted.add(element);
		}
		return extracted;
	}
private void generateCompilationTarget(List classpath, CompiledEntry entry) {
		script.println();
		String name = entry.getName(false);
		List extractedPath = generateExtractNestedJars(classpath, entry);

//		String depends = TARGET_INIT + "," + name + TARGET_NESTED_JARS;
		String depends = TARGET_INIT; //$NON-NLS-1$
		IStatus status=new Status(IStatus.INFO, "org.eclipse.pde.build", "generateCompilationTarget方法depends:"+depends);
		BundleHelper.getDefault().getLog().log(status);

 

分享到:
评论

相关推荐

    maven内存溢出解决放啊

    对于使用Eclipse IDE并安装了m2eclipse插件的用户来说,可以通过IDE内部配置来解决内存溢出问题。具体步骤如下: 1. **创建新配置**:在项目上右键点击,选择“Run As” -&gt; “Run Configurations”,然后在“Maven ...

    eclipse-java-mars-2-win32-x86_64(64位)

    2. **稳定性增强**:相较于32位版本,64位版本在处理大数据量时更稳定,减少了由于内存溢出导致的程序崩溃风险。 3. **兼容性**:虽然大多数插件已经兼容64位版本,但在选择插件时仍需注意是否支持64位系统。 #### ...

    linux下eclipse集成tomcat(tomcatforEclipse)开发

    - 调整Tomcat的内存配置,特别是当运行大型应用时,避免内存溢出。 - 避免端口冲突,检查Tomcat使用的端口(如8080)是否已被其他服务占用。 通过以上步骤,开发者可以在Linux下的Eclipse环境中高效地开发和测试...

    Eclipse中文教程~JAVA学者实用

    9. **问题解决与优化**:分享一些常见问题的解决方法,如内存溢出、性能优化和启动慢等问题,以及如何个性化设置Eclipse以提高开发体验。 10. **实战演练**:通过实际的项目案例,让学习者将理论知识运用到实践中,...

    java打包jar方案的优缺点分析及解决方案

    然而,它的主要缺点是生成的JAR文件可能非常大,可能导致内存溢出问题,尤其是在DOS环境下运行。此外,过多的库可能导致类冲突。 2. **直接用MyEclipse的Export导出JAR包** MyEclipse的直接导出功能生成的JAR文件...

    Myeclipse快捷键和常用问题经验总结操作手册打包

    内存溢出问题可通过增大JVM内存设置(如-Xms和-Xmx)来解决,具体设置可在MyEclipse的运行配置中调整。 操作手册中还会涉及MyEclipse的使用技巧,例如,利用MyEclipse的代码提示功能(Ctrl+Space)快速补全代码,...

    jeecg常见问题

    Eclipse在运行Java应用时可能会遇到内存溢出问题,这通常是因为JVM可用内存不足导致的。 **错误信息**: ``` 2014-6-27 15:29:21 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler process 严重:...

    poi导出大数据,先生成多个excel在生成一个jar包

    4. **内存管理**:由于大数据可能导致内存溢出,POI提供了Streaming UserModel API(SXSSF),它可以在内存中只保留有限行的数据,其余行写入磁盘,从而降低内存消耗。 接下来,生成JAR包的过程涉及Java的打包技术...

    ExpandablePanel空间查看大图特效

    2. 图片加载和缩放:Android的Bitmap类和ImageView的使用,以及可能用到的图片库如Picasso或Glide,它们在处理大图时能进行优化,防止内存溢出。 3. 动画效果:Android的Animation类或Animator类的运用,用于实现...

    tomcat 培训教程

    常见的问题可能涉及启动失败、内存溢出、连接池管理等,解决这些问题需要对Tomcat的配置和日志进行深入分析。 **十一、Tomcat与Eclipse集成** 开发过程中,将Tomcat集成到Eclipse等IDE中,可以方便地进行调试、部署...

    Java精品文章全集chm

    3. **Java内存管理**:深入讲解JVM(Java虚拟机),如内存模型(堆、栈、方法区、本地方法栈等)、垃圾收集机制、内存溢出问题分析及优化策略。 4. **Java并发编程**:包括线程同步机制(synchronized、Lock等)、...

    maven基础使用手册

    6. 设置 MAVEN_OPTS:为了防止内存溢出,可以创建一个系统变量MAVEN_OPTS,值为如"-Xms256m -Xmx512m",根据计算机性能调整内存分配。 7. Maven本地仓库:Maven在本地有一个默认的存储库,用于保存下载的依赖项。...

    Babies-Puzzle

    同时,为了保证图像的质量,开发者需要考虑内存管理和图片加载优化,避免因图片过大导致的内存溢出问题。 再者,游戏逻辑的实现离不开Java编程语言。在Android中,Java是主要的编程语言,负责处理游戏的逻辑控制、...

    【重大更新】用SWT/JFace实现的放大镜JZoomer V1.1.1(附源码)

    Bug修正: ·解决内存溢出Bug ·解决字符串乱码Bug `解决拖拽位置不正常Bug 2. 功能添加: ·添加SystemPropertiesReader类,用于解析系统配置文件system.properties ·完成软件的国际化,...

    extjs 3.4 开发前准备

    对于EXTJS 3.4和4.1版本的共存问题,可以将它们分别打包成WAR文件,部署到Tomcat或JBoss服务器中,以避免内存溢出。访问EXTJS的API和示例,可以通过配置服务器的URL来实现。 3. EXTJS 开发环境配置 - 浏览器:推荐...

    SDMS.rar_java源代码_学生宿舍管理系统_学生宿舍管理系统 java_宿舍管理系统_寝室管理系统java源

    文件上传和下载功能是系统的一部分,可能采用了Apache Commons FileUpload库处理文件上传,通过流式处理避免内存溢出问题。同时,文件可能被存储在服务器的指定目录或云存储服务中。 在部署和运行方面,系统可能...

    Android技术总结.doc

    Android应用程序需要合理地管理内存,以避免内存泄露和溢出。 5.2 UI优化 Android应用程序的UI性能优化可以通过使用缓存、优化布局和避免过度绘制等方法来实现。 六、Android测试和调试 6.1 JUnit测试 Android...

    Android画廊

    - `createScaledBitmap`:根据目标尺寸缩放位图,避免直接加载大图导致内存溢出。 - `compress`:将Bitmap转换为其他格式(如JPEG或PNG),并保存到文件或输出流。 2. 图片的显示: Android使用ImageView组件来...

    MAVEN使用最佳实践

    在处理大型项目或执行如`mvn site`这样的资源密集型任务时,Maven可能需要更多内存来避免Java堆溢出。可以在系统环境变量中设置 MAVEN_OPTS,例如在Windows中编辑 `%M2_HOME%\bin\mvn.bat` 文件,增加 `-Xms` 和 `-...

Global site tag (gtag.js) - Google Analytics