首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 应用服务器 >

关于Linux 下的JVM调优请问,请高手赐教

2013-03-26 
关于Linux 下的JVM调优请教,请高手赐教!最近自己用SSH2开发后台的时候项目运行久了经常报永久性内存溢出 :

关于Linux 下的JVM调优请教,请高手赐教!
最近自己用SSH2开发后台的时候  项目运行久了经常报永久性内存溢出 :java.lang.OutOfMemoryError: PermGen space 

看了很多资料 都说是在 tomcat/bin 目录下 设置catalina.sh 的 JAVA_OPTS 属性

但是我发现好像没有起作用

请问在linux 下能通过什么指令直接设置JVM的内存大小么

哪个指令可以查看JVM内存 谢谢!
[解决办法]
1.基本概念。 
JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn512m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCompressedOops 

-server 启用能够执行优化的编译器。 

-Xss 单个线程堆栈大小值。 

-Xms 启动应用时,JVM堆空间的初始大小值。 

-Xmx 应用运行中,JVM堆空间的极限值。 

-Xmn 堆空间的新生代空间大小。 

-XX:PermSize永久存储区的大小 

2.VM性能诊断工具 

基本工具:JPS ,JSTAT,JMAP 

Jstat( “Java Virtual Machine statistics monitoring tool” )是JDK自带的一个轻量级小工具。主要对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。 
语法结构如下:jstat [Options] vmid [interval] [count] 
    Options -- 选项,我们一般使用 -gcutil 查看gc情况 
    vmid    -- VM的进程号,即当前运行的java进程号 
    interval-- 间隔时间,单位为毫秒 
    count   -- 打印次数,如果缺省则打印无数次 

root@(none):~# jstat -gcutil 595 
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT  GCT   
  0.00   0.00  25.40  29.78  48.50      5    0.036     3    0.238    0.274 

    S0  -- Heap上的 Survivor space 0 区已使用空间的百分比 
    S1  -- Heap上的 Survivor space 1 区已使用空间的百分比 
    E   -- Heap上的 Eden space 区已使用空间的百分比 
    O   -- Heap上的 Old space 区已使用空间的百分比 
    P   -- Perm space 区已使用空间的百分比 
    YGC -- 从应用程序启动到采样时发生 Young GC 的次数 
    YGCT-- 从应用程序启动到采样时 Young GC 所用的时间(单位秒) 
    FGC -- 从应用程序启动到采样时发生 Full GC 的次数 
    FGCT-- 从应用程序启动到采样时 Full GC 所用的时间(单位秒) 
    GCT -- 从应用程序启动到采样时用于垃圾回收的总时间(单位秒) 

jmap 
jmap 是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。 
使用方法 
jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。 
jmap -dump:format=b,file=f1 PID可以将该PID进程的内存heap输出出来到f1文件里。 

集成工具: JConsole,jvisualvm 

典型性能故障分析 

2.vmstat 

网上很多自己找了看.......

热点排行