Java启动参数与内存调优一些学习笔记

转载自  Java启动参数与内存调优一些学习笔记

.参数的含义
-Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=64M JVM初始分配的非堆内存

-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配

JVM内存模型

1、程序计数器

程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。

 

 

2、Java 虚拟机栈

与程序计数器一样,Java 虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。

Java 内存区分为堆内存(Heap)和栈内存(Stack),这种分法比较粗糙,Java 内存区域的划分实际上远比这复杂。
 

3、本地方法栈

本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native 方法服务。

 

4、Java 堆
Java 堆中还可以细分为:新生代和老年代;

再细致一点的有Eden 空间、From Survivor 空间、To Survivor 空间等。如果从内存分配的角度看,线程共享的Java 堆中可能划分出多个线程私有的分配缓冲区(Thread LocalAllocation Buffer,TLAB)。不过,无论如何划分,都与存放内容无关,无论哪个区域,存储的都仍然是对象实例,进一步划分的目的是为了更好地回收内存,或者更快地分配内存。

 

5、方法区
虽然Java 虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java 堆区分开来。

对于习惯在HotSpot 虚拟机上开发和部署程序的开发者来说,很多人愿意把方法区称为“永久代”(Permanent Generation),本质上两者并不等价。

 

 

6、运行时常量池

运行时常量池(Runtime Constant Pool)是方法区的一部分。

 

6、直接内存
直接内存(Direct Memory)并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用,而且也可能导致OutOfMemoryError 异常出现,

 

jdk1.7常用的调试命令

1.jps

查看java进程号,例如:
D:\jdk7\bin>jps
9616 Jps
4136 org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar

上例的 4136 就是java进程号(eclispe的)

 

2.jstat -gc 进程号
查看某进程gc情况,例如:

D:\jdk7\bin>jstat -gc 4136
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU
   YGC     YGCT    FGC    FGCT     GCT
44544.0 44544.0  0.0   44540.0 268800.0 139260.2  715776.0   105657.3  101376.0
101048.6      3    0.310   0      0.000    0.310
 

3.jstat -gcutil 进程号
查看某进程gc情况 ,百分比情况:

D:\jdk7\bin>jstat -gcutil 4136
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
  0.00  99.99  51.81  14.76  99.68      3    0.310     0    0.000    0.310


4.jinfo 进程号
查看某进程的java运行期参数
jinfo -flag CMSInitiatingOccupancyFraction
查看指定参数的值

5.jmap -dump:format=b,file=eclipse.bin  进程号
dump指定的进程到文件。


6. jhat 文件名
分析dump文件,生产报告,默认访问地址http://localhost:7000/

 

7.jvisualvm.exe可视化的java内存分析工具。新一代分析工具功能强大。

增加了gc插件后的界面,增加插件的方法 工具-〉插件-〉可用插件-〉Visual GC

但是,注意Visual VM分析工具本身也是挺消耗系统性能的。

经验:

1.使用Spring 和hibatnatie等框架,容易引起永久代”(Permanent Generation)占满,动态代理类的原因?

2.使用Apache NIO的类包,容易引发直接内存(Direct Memory)占满。

3.JVM内存并非越大越好,32位JVM有时候比64位JVM运行速度更快。如果,要消耗机器硬件性能,不妨多启动几个Tomcat,分别用不同端口。32JVM的内存管理不能超过2GB,64位JVM才可以超过4GB。

(理论上来说32位的JVM有4G的堆大小限制。但是因为各种条件限制比如交换区,内核地址空间使用,内存碎片,虚拟管理机的管理开销,实际上可用的堆的大小远远比理论上的4G要少。
在32位windows的机器上,堆最大可以达到1.4G至1.6G。
在32位solaris的机器上,堆最大可以达到2G
而在64位的操作系统上,32位的JVM,堆大小可以达到4G)

4.在linux环境下 ,kill -3 pid  的方式发送一个SIGQUIT信号给Java应用之后,通常会有当前的Thread Dump输出。(吓唬JVM输出Dump),但是,服务器环境的 dump动 不动 就是上G的文件,即使Dump出来也很难分析。

5.一种土办法是 卸载可能产生问题的模块,按个去试试是否会内存溢出。这跟修电脑的原理有点类似。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle数据库基本概念理解(3)

/*| PL/SQL编程*/ --声明变量 DECLAREV_NAME VARCHAR2(20); --一般变量V_AGE NUMBER(2);v_id SUN.TUSER.USERID%TYPE:14;--属性变量v_user SUN.TUSER%ROWTYPE; --行属性变量 BEGIN--赋常量值V_NAME:Tom;V_AGE :20;DBMS_OUTPUT.put_line(姓名:||V_NAME||年…

服务器io修改,更改 Linux I/O 调度器来改善服务器性能

为了从 Linux 服务器榨取尽可能多的性能,请了解如何更改 I/O 调度器以满足你的需求。Linux I/O 调度器()控制内核提交读写请求给磁盘的方式。自从 2.6 内核以来,管理员已经能够更改这个调度器,所以他们可以自定义他们的平台以完全适合他们的需…

如何合理的规划一次 JVM 性能调优

转载自 如何合理的规划一次 JVM 性能调优摘要: JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响,那么如何进行一次优雅的调优,提升应用的性能?这是 JVM 优化系列第三篇:JVM 调优系列…

服务器复制不了文档,服务器复制粘贴不了

服务器复制粘贴不了 内容精选换一换帮助用户完成专属云服务器备份任务的创建,快速完成服务器数据保护。专属云服务器不支持应用一致性备份。当专属对象存储的容量不足时,会导致专属云服务器备份创建失败。已开通专属对象存储。登录管理控制台。单击&…

大神开发的模板框架 包括常见的功能

https://gitee.com/lcg0124/bootdo http://localhost/ 就可以访问了 http://localhost/blog

在Linux开发.NET——拜拜了Win10

我是一个有多年开发经验的.NET程序员。最近,我决定使用*NIX系统来开发.NET程序,虽然看起来有些激进,但是我可以说,这是我做过最好的决定了。 事情的起因是这样的,上周星期五(十月14日)&#xff…

20个非常有用的Java程序片段

转载自 20个非常有用的Java程序片段下面是20个非常有用的Java程序片段,希望能对你有用。 1. 字符串有整型的相互转换String a String.valueOf(2); //integer to numeric string int i Integer.parseInt(a); //numeric string to an int 2. 向文件末尾添加内…

从工程转向管理,访谈Github公司的Phil Haack

在本次播客中,QCon旧金山大会、 伦敦大会和纽约大会的主席Wes Reisz访谈了GitHub的工程主管Phil Haack,Haack在Github的工作聚焦于实现将软件推送到开发人员的桌面,当前正致力于发布GitHub Desktop这样的软件。GitHub Desktop是用于Visual St…

怎样往阿里云windows服务器传文件

怎样往阿里云windows服务器传文件 2017年12月05日 21:28:56 阿杜_ardo 阅读数 9169 1、在本地电脑上,快捷键“WINR"在“运行”中输入“MSTSC”,点击确定。 2、在“远程桌面连接”框框点击“选项”展开。(计算机中输入阿里云服务器的IP地…

Hibernate基本概念

--用户解锁alter user scott account unlock;一个项目对应一个表空间oracle:--创建表空间--创建用户create user 用户名idendified by 密码default tablespace 表空间名-- 授权grant 权限(角色) to 用户--建表--增删改查--存储过程对象 ->jdbc->数据库(表…

手机app 服务器 网页同步,手机app接入云服务器

手机app接入云服务器 内容精选换一换通过内网连接云手机实例时,需要在租户VPC中创建一台弹性云服务器,作为连接云手机的跳板机器。若创建云手机服务器时未使用自定义网络,还需在云手机租户的VPC和服务器所在VPC之间建立对等连接,如…

Java中的OutOfMemoryError

转载自 Java中的OutOfMemoryError引子&#xff1a;今天在<Sharding-JDBC官方群>里有个哥们称“不连sjdbc不会把内存吃光&#xff0c;连sjdbc跑一会就把内存吃光”&#xff0c;倍感诧异&#xff0c;我们已经用sj很久了&#xff0c;一直未发现sj吃内存的情况&#xff0c;遂…

沉沦17年,这位昔日科技霸主、最值钱企业,终于回来了……

1999年12月30日&#xff0c;这是微软最高光的时刻。当天其股价创出历史最高位59.97美元/股&#xff0c;市值达到了6130亿美元&#xff0c;是有史以来最值钱的公司——直至13年后&#xff0c;苹果公司的市值才超越这一纪录。 ▲微软股价 处在新千年之交&#xff0c;意气风发的微…

mysql5.5安装配置 在阿里云服务器上 本地navicat连接

MySQL 5.5安装配置教程. 2018年03月20日 19:18:49 沸点数据 阅读数 18046 1、官网下载MySQL 5.5。 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.5.html#downloads 2、安装MySQL5.5 注意&#xff1a;安装之前&#xff0c;请关闭杀毒软件。 &#xff08;1…

Hibernate基本概念 (2)

框架&#xff1a;1.一个应用程序的半成品2.提供了一系列可以重用的API3.能开发效率更高&#xff0c;性能更好的项目Hibernate:持久化&#xff08;jdbc&#xff09; ORM( 对象 关系 映射)hibernate环境搭建1.导包&#xff1a;核心包&#xff0c;必须包&#xff0c;数据驱动包2…

通过网页查看服务器算法,java分析html算法(java网页蜘蛛算法示例)

遇到复杂而繁琐的html页面大家都望而却步。因为很难获取到相应的数据。最古老的办法的是尝试用正则表达式&#xff0c;估计那么繁琐的东西得不偿失&#xff0c;浪费我们宝贵的时间。第二个办法用开源组织htmlparser的包&#xff0c;这个是一个比较老的项目&#xff0c;但是效果…

JVM 调优系列之监控工具

转载自 JVM 调优系列之监控工具 摘要: 项目部署线上之后&#xff0c;我们该如何基于监控工具来快速定位问题.... 通过上一篇的jvm垃圾回收知识&#xff0c;我们了解了jvm对内存分配以及垃圾回收是怎么来处理的。理论是指导实践的工具&#xff0c;有了理论指导&#xff0c;定位…

写给开发者:记录日志的10个建议

尽管在写这篇博文的时候&#xff0c;我是在负责运维工作&#xff0c;不过本文主要是写给开发者的。 对我来说&#xff0c;明白如何记录日志和记录什么&#xff0c;是软件工程师必须明了的最艰巨的任务之一。之所以这么说&#xff0c;是因为这项任务与预测&#xff08;divinatio…

解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误

解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误 2018年07月23日 16:55:42 犹抱琵琶半遮面 阅读数 29677 &#xff01;&#xff01;&#xff01;此类问题出现的原因是——不细心 一般的原因 Mapper interface和xml文件的定义对应…