`

JVM内存设置、调优(包括Eclipse、Tomcat内存设置)

阅读更多

在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步。

PermGen space:全称是Permanent Generation space.就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候被放入该区域Heap space:存放Instance。

GC(Garbage Collection)应该不会对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误

Java Heap分为3个区
1.Young
2.Old
3.Permanent

Young保存刚实例化的对象。当该区被填满时,GC会将对象移到Old区。Permanent区则负责保存反射对象,本文不讨论该区。

JVM的Heap分配可以使用-X参数设定,

-Xms 
初始Heap大小

-Xmx 
java heap最大值 

-Xmn 
young generation的heap大小

JVM有2个GC线程
第一个线程负责回收Heap的Young区
第二个线程在Heap不足时,遍历Heap,将Young 区升级为Older区

Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能。
为什么一些程序频繁发生GC?

有如下原因:
1.程序内调用了System.gc()或Runtime.gc()。
2.一些中间件软件调用自己的GC方法,此时需要设置参数禁止这些GC。
3.Java的Heap太小,一般默认的Heap值都很小。
4.频繁实例化对象,Release对象 此时尽量保存并重用对象,例如使用StringBuffer()和String()。

如果你发现每次GC后,Heap的剩余空间会是总空间的50%,这表示你的Heap处于健康状态,许多Server端的Java程序每次GC后最好能有65%的剩余空间

经验之谈:

1.Server端JVM最好将-Xms和-Xmx设为相同值。为了优化GC,最好让-Xmn值约等于-Xmx的1/3。
2.一个GUI程序最好是每10到20秒间运行一次GC,每次在半秒之内完成。

注意:

1.增加Heap的大小虽然会降低GC的频率,但也增加了每次GC的时间。并且GC运行时,所有的用户线程将暂停,也就是GC期间,Java应用程序不做任何工作。
2.Heap大小并不决定进程的内存使用量。进程的内存使用量要大于-Xmx定义的值,因为Java为其他任务分配内存,例如每个线程的Stack等。

Stack的设定
每个线程都有他自己的Stack。

-Xss 
每个线程的Stack大小

Stack的大小限制着线程的数量。如果Stack过大就好导致内存溢漏。-Xss参数决定Stack大小,例如-Xss1024K。如果Stack太小,也会导致Stack溢漏。

 

主要通过以下的几个jvm参数来设置堆内存的: 

-Xmx512m 最大总堆内存,一般设置为物理内存的1/4
-Xms512m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情况而调整堆的大小了
-Xmn192m 年轻带堆内存,sun官方推荐为整个堆的3/8
堆内存的组成 总堆内存 = 年轻带堆内存 + 年老带堆内存 + 持久带堆内存
年轻带堆内存 对象刚创建出来时放在这里
年老带堆内存 对象在被真正会回收之前会先放在这里
持久带堆内存 class文件,元数据等放在这里
-XX:PermSize=128m 持久带堆的初始大小
-XX:MaxPermSize=128m 持久带堆的最大大小,eclipse默认为256m。如果要编译jdk这种,一定要把这个设的很大,因为它的类太多了。


我的配置(2g内存的笔记本): 





还有其它的相关参数可以看看下面的参考材料,很有启发的: 
-XX:+UseParallelGC 使用并发内存回收 
-XX:+DisableExplicitGC 禁用System.gc()的显示内存回收 

 

附Eclipse.ini配置实例,4G内存

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms1024m
-Xmx1024m
-Xmn364m
-XX:PermSize=512m
-XX:MaxPermSize=1024m
-XX:+UseParallelGC
-XX:+DisableExplicitGC
 
Eclipse中Jdk运行内存,Tomcat运行内存设置
1.Eclipse配置Jdk运行内存

 

2.Eclipse配置tomcat运行内存

Run-Configratruations

  • 大小: 11.4 KB
  • 大小: 104.7 KB
  • 大小: 73 KB
0
0
分享到:
评论

相关推荐

    eclipse tomcat启动,内存溢出问题

    2. **默认的JVM堆内存设置不足**:默认情况下,JVM分配给应用程序的堆内存可能相对较小,不足以满足特定应用场景的需求。 3. **配置不当**:在配置文件中,如果没有正确地设置JVM参数来调整内存大小,也会导致内存...

    jvm工具、参数调优&调试技巧

    - `-Xmx<size>`:设置JVM的最大堆内存。 - `-Xms<size>`:设置JVM的初始堆内存。 - `-XX:+UseParallelGC`:使用并行垃圾收集器。 3. **行为参数** - `-Djava.net.preferIPv4Stack=true`:优先使用IPv4协议栈。 ...

    tomcat 热部署 hot deploy Jrebel 加大JVM内存

    总结起来,这个主题涵盖了Tomcat的热部署策略,Jrebel工具的使用以及JVM内存调优,这些都是Java开发中提高生产力和解决性能问题的关键技术。通过合理运用这些知识,开发者可以更高效地调试和测试代码,同时确保系统...

    Tomcat调优及相关汇总设置

    ### Tomcat调优及相关汇总设置 #### 一、Tomcat防止恶意攻击 ##### 1. 管理平台安全设置 - **管理平台**: Tomcat自带的管理平台(manager)是一个web应用,可通过`localhost:8080/manager/html`进行访问。此平台...

    Eclipse的tomcat插件

    在性能调优方面,Eclipse的Tomcat插件也提供了便利。例如,开发者可以监控服务器的资源使用情况,包括CPU、内存等,以便于优化应用性能。此外,插件还支持配置服务器的启动参数,如JVM选项,以适应不同的运行环境...

    Java 中Eclipse 和 tomcat 配置 和,面试技巧!

    6. 熟悉JVM:面试中可能涉及垃圾回收、内存模型、JVM调优等方面的问题。 7. 实践项目经验:讲述参与过的项目,强调你在项目中的角色和贡献,展示解决问题的能力。 8. 持续学习和关注新技术:如Spring Boot、...

    Eclipse TPTP

    这不仅包括了基本的CPU和内存使用情况监控,还包括了更高级的功能,如线程分析、JVM参数调整、GC(垃圾回收)行为分析等,这些都是进行性能调优时不可或缺的工具。 **标签**中提到的“Eclipse”、“Tomcat”、...

    202310-Tomcat面试题(2023最新版)思维导图.zip

    - JVM调优 - Tomcat调优 - 数据库调优 10. 安全: - XSS、CSRF、SQL注入等常见安全漏洞 - Spring Security安全框架 以上是Java后端必会的所有技能,掌握这些技能可以帮助开发人员在Java后端开发领域更加...

    tomcat学习笔记

    - 使用JVM的内存调优,调整`setenv.sh`或`setenv.bat`中的JVM启动参数。 7. **日志与错误处理** - Tomcat的日志文件主要位于`logs`目录下,包括`catalina.out`、`host-manager`、`manager`等。 - 通过`logging....

    Tomcat与Java Web开发技术详解

    - **内存调优**:分析了Tomcat的内存配置,包括JVM参数的设置和内存泄漏的预防。 5. **安全与部署** - **安全管理**:涵盖了用户认证、授权、会话管理等安全措施的实施。 - **虚拟主机**:介绍了如何在Tomcat中...

    Tomcat5.0服务器

    - **性能调优**:调整Connector组件的参数,如maxThreads、minSpareThreads等,以及JVM内存设置,以适应不同的负载需求。 6. **故障排查与日志** - **日志系统**:Tomcat5.0生成的日志文件位于logs目录下,通过...

    apache-tomcat-9.0.62.zip下载安装java开发必备,稳定

    3. **性能调优**:根据应用负载调整参数,如增大堆内存、优化JVM设置、减少应用程序的响应时间等。 **集成开发环境(IDE)支持:** 许多Java IDE,如Eclipse、IntelliJ IDEA等,都提供了与Tomcat的集成,支持直接在...

    tomcat 8.0

    - 使用JVM的性能调优选项,例如调整堆内存大小,启用G1垃圾收集器等。 7. **扩展性** 虽然Tomcat本身不包含完整的Java EE功能,但可以通过与其他服务器(如JBoss、GlassFish)或添加Apache Maven插件来扩展其功能...

    tomcat服务器

    10. **性能优化**:Tomcat可以通过调整一系列参数进行性能优化,包括线程池大小、内存分配、JVM调优等。这些配置通常在`conf/server.xml`或`bin/catalina.sh`(或`catalina.bat`)中进行。 总结来说,Tomcat8作为一...

    官方原版tomcat8.5.14 32位

    2. **内存调优**:根据应用的负载和资源需求,调整JVM的内存设置,例如在`bin/catalina.sh`或`bin/catalina.bat`中设置`JAVA_OPTS`。 3. **连接器优化**:根据服务器的硬件和网络条件,调整连接器的参数,如最大线程...

    202308-Java虚拟机(JVM)面试题(2023最新版)思维导图.zip

    - JVM调优 - Tomcat调优 - 数据库调优 10. 安全: - XSS、CSRF、SQL注入等常见安全漏洞 - Spring Security安全框架 以上是Java后端必会的所有技能,掌握这些技能可以帮助开发人员在Java后端开发领域更加...

    tomcat1.7 64位

    7. **性能调优**:可以通过调整JVM参数、线程池设置、连接器配置等方式对Tomcat进行性能优化,以适应不同规模的业务需求。 8. **集成开发环境**:Tomcat可与Eclipse、IntelliJ IDEA等IDE集成,方便开发者进行调试和...

    tomcat 7 64位操作系统

    - 使用JVM的性能监视和调优工具,如JVisualVM或JProfiler,监控和优化内存分配和垃圾回收。 6. **故障排查与日志**: - 查看`logs`目录下的日志文件,如`catalina.out`,获取运行时错误信息。 - 使用`stderr.log...

Global site tag (gtag.js) - Google Analytics