jvm的原理及內存優化
来源:互联网 发布:河北seo 编辑:程序博客网 时间:2024/06/10 18:57
-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Xms512m
由於默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。
-Xms是设置内存初始化的大小
-Xmx是JVM内存设置中设置最大能够使用内存的大小
JVM內存調優:
1.heap設定與垃圾回收;
JavaHeap分为3个区,Young,Old和Permanent。Young保存刚实例化的对象。当该区被填满时,GC会将对象移到Old区。Permanent区则负责保存反射对象。JVM的Heap分配可以使用-X参数设定,
JVM有2个GC线程。
第一个线程负责回收Heap的Young区。
第二个线程在Heap不足时,遍历Heap,将Young区升级为Older区。Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能。
2.stack的設定;
Xss每个线程的Stack大小
Stack的大小限制着线程的数量。如果Stack过大就好导致内存溢漏。-Xss参数决定Stack大小,例如-Xss1024K。如果Stack太小,也会导致Stack溢漏。
3.4种GC;第一种为单线程GC,也是默认的GC。,该GC适用于单CPU机器。
第二种为ThroughputGC,是多线程的GC,适用于多CPU,使用大量线程的程序。第二种GC与第一种GC相似,不同在于GC在收集Young区是多线程的,但在Old区和第一种一样,仍然采用单线程。-XX:+UseParallelGC参数启动该GC。
第三种为ConcurrentLowPauseGC,类似于第一种,适用于多CPU,并要求缩短因GC造成程序停滞的时间。这种GC可以在Old区的回收同时,运行应用程序。-XX:+UseConcMarkSweepGC参数启动该GC。
第四种为IncrementalLowPauseGC,适用于要求缩短因GC造成程序停滞的时间。这种GC可以在Young区回收的同时,回收一部分Old区对象。-Xincgc参数启动该GC。
4.硬件环境;================================================分割线=============================================================================
运行原理:
java编译器将java源文件(.java)编译成面向JVM生成JVM能理解的代码或字节码文件(.class);JVM将每一条指令翻译成不同平台机器码(.exe文件),通过特定平台(os)运行。
JVM的类装载机制:将包含在类文件中的字节码装载到JVM中。(JVM中类的装载是由ClassLoader和它的子类来实现的)
JVM的运行引擎机制:负责执行包含在已装载的类或接口中的指令。
装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量的初始化Java代码和静态Java代码块。
- jvm的原理及內存優化
- jvm的工作原理及调优
- JVM及 GC 的 工作原理
- JVM的运行原理及优化配置
- jvm的工作原理及调优
- jvm原理及优化
- jvm原理及优化
- JVM原理及优化
- jvm原理及优化
- JVM原理及优化
- JVM运行机制及原理
- 浅谈JVM及原理
- jvm gc 原理及实践
- JVM原理及内存溢出
- JVM原理及底层探索
- JVM原理及底层探索
- JVM原理及底层探索
- 【java】JVM原理及应用
- My Blog
- 创业大佬说
- 微信(Javascript 语言的模板引擎)中的Mustache
- caffe 学习笔记之DropoutParameter
- 6月21日云栖精选夜读:国内首位!Node.js社区将阿里云工程师张秋怡吸纳为CTC成员
- jvm的原理及內存優化
- Linux_Hadoop2.7.3 安装笔记
- Spring的Junit测试
- 链表排序(冒泡、插入、归并和快排)
- Linux中的挂载点
- Linux上安装RabbitMQ回忆录
- UpdateWindow
- HTTPS基本原理
- 东翌编程推出手把手0基础学习微信小程序开发