博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM的内存结构以及性能调优
阅读量:5207 次
发布时间:2019-06-14

本文共 1628 字,大约阅读时间需要 5 分钟。

JVM的内存结构以及性能调优

发布时间: 2017-11-22 阅读数: 16675

JVM的内存结构以及性能调优
1:JVM的结构主要包括三部分,堆,栈,非堆内存(方法区,驻留字符串)
堆上面存储的是引用数据类型的实例,栈当中存储的是变量的引用,
方法区主要存储的是运行时常量池,以及类、方法相关的数据.
堆主要分为新生代,年老代
1:新生代 新创建的对象是存放在新生代当中的,
Person P=new person();
当新生代内存空间被用完时,就会触发垃圾回收。这个垃圾回收叫做Minor GC。
2:年老代 被多次GC回收之后还存活的对象被转移到年老代.
年老代的垃圾收集叫做Major GC,,Major GC会花费更多的时间。
当major GC进行垃圾回收的时候,会触发 stop the world 事件,所有的线程
都会暂停,等待GC结束之后,才恢复。所以呢,我们需要对垃圾收集进行监控,
尽量避免major GC,防止应用程序暂时中断.
永久代或者“Perm Gen”包含了JVM需要的应用元数据,这些元数据描述了在应用里使用的类和方法。
注意,永久代不是Java堆内存的一部分。
方法区是永久代空间的一部分,并用来存储类型信息(运行时常量和静态变量)和方法代码和构造函数代码。
运行时常量池是每个类常量池的运行时代表。它包含了类的运行时常量和静态方法。运行时常量池是方法区的一部分。
Java栈内存
Java栈内存用于运行线程。它们包含了方法里的临时数据、对象引用(变量)
jvm的性能调优(调整参数)
-Xms
设置JVM启动时堆的初始化大小。
-Xmx
设置堆最大值。
-Xmn
设置年轻代的空间大小,剩下的为老年代的空间大小。
-XX:PermGen
设置永久代内存的初始化大小。
-XX:MaxPermGen
设置永久代的最大值。
1:第一种方式 通过myeclipse开发工具,给jvm设置启动参数,可以进行调优
2:第二种方式  通过在tomcat安装目录下面的bin目录下的,startUp.bat文件当中
添加一行设置参数:set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m
window-preference-tomcat7.0-jdk-vm argumets
-Xms2048m -Xmx2048m -Xmn1024m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=512m
jvm监控工具的使用
Jconsole 在java安装目录下面bin下面的 JConsole 双击打开,选择一个java程序相关的进程
进入可以看到当前jvm的内存以及使用情况,如果发现堆内存或者永久代内存不够用,或者是垃圾
回收次数较多,就去调整JVM的参数,提高应用的程序的性能和吞吐量.
Java垃圾回收调优应该是提升应用吞吐量的最后一个选择。在你发现应用由于长时间垃圾回收导致了应用性能下降、出现超时的时候,应该考虑Java垃圾收集调优。
如果你在日志里看到 java.lang.OutOfMemoryError: PermGen space错误,那么可以尝试使用 -XX:PermGen 和 -XX:MaxPermGen JVM选项去监控并增加Perm Gen内存空间。你也可以尝试使用-XX:+CMSClassUnloadingEnabled并查看使用CMS垃圾收集器的执行性能。
如果你看到了大量的Full GC操作,那么你应该尝试增大老年代的内存空间。

全面垃圾收集调优要花费大量的努力和时间,这里没有一尘不变的硬性调优规则。你需要去尝试不同的选项并且对这些选项进行对比,从而找出最适合自己应用的方案。

参考网站:

 

转载于:https://www.cnblogs.com/51testing/p/8398564.html

你可能感兴趣的文章
Partition(线段树的离线处理)
查看>>
poj3449Geometric Shapes
查看>>
利用WebApplicationInitializer配置SpringMVC取代web.xml
查看>>
MySQL DBA成长之路
查看>>
探秘启明星辰大数据安全分析平台
查看>>
Thread State
查看>>
Linux 动态链接库 - dll劫持
查看>>
Silverlight4 图片上传与位置标记
查看>>
AIC和BIC
查看>>
oracle生成主键
查看>>
秦旭光第一周任务
查看>>
java - day11 - OverRideTest
查看>>
Objective-C 内存管理之dealloc方法中变量释放处理
查看>>
iOS开发 viewWillAppear:(BOOL)animated真机调试的时候不执行了怎么办
查看>>
2019年高速免费
查看>>
实验三— —敏捷开发与XP实践
查看>>
POJ 1691 Painting A Board(DFS)
查看>>
Python【每日一问】15
查看>>
第二篇:库相关操作
查看>>
mongodb分页查询,排序
查看>>