推荐阅读https://www.cnblogs.com/wangjzh/p/5258254.html

一、内存结构图

  

  先导知识:

  一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行。

  程序计数器

    保存着当前线程执行的虚拟机字节码指令的内存地址,可以看作是当前线程所执行的字节码的行号指示器。使得保证线程切换回来后,还能恢复到原先状态。(本地native丰富则计数器为空)

  虚拟机栈(JVM栈)  

    每创建一个线程时就会对应创建一个Java栈,所以Java栈也是"线程私有"的内存区域,这个栈中又会对应包含多个栈帧,每调用一个方法时就会往栈中创建并压入一个栈帧,栈帧是用来存储方法数据和部分过程结果(局部变量表、操作数栈、动态链接、方法出口等信息的数据结构,每一个方法从调用到最终返回结果的过程,就对应一个栈帧从入栈到出栈的过程。

    我们平时说的堆栈堆栈,栈就是指代的这个JVM栈,堆在下文讲解。

  本地方法栈

    与虚拟机栈类似,为本地方法服务

  方法区

    用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

    方法区中还存在着常量池,常量池包含着一些常量和符号引用(加载类的连接阶段中的解析过程会将符号引用转换为直接引用)。

  

    堆(heap)是存储java实例或者对象的地方,是GC的主要区域,同样是线程共享的内存区域。(进一步可以细分为新生代和老年代

  垃圾回收机制,参考:https://www.cnblogs.com/andy-zcx/p/5522836.html

二、控制参数

-Xms:设置堆的最小空间大小。(初始化大小)

-Xmx:设置堆的最大空间大小。

-XX:NewSize:设置新生代最小空间大小。

-XX:MaxNewSize:设置新生代最大空间大小。

-XX:PermSize:设置永久代最小空间大小。

-XX:MaxPermSize:设置永久代最大空间大小。

-Xss:设置每个线程的堆栈大小。

   完整参数信息https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

   参数的设置方式http://blog.csdn.net/huanhuan_tiantian/article/details/8212885

java -Xms100m -Xmx384m Main中的 -Xms100m -Xmx384m即是指定你应用程序运行时,jvm的堆内存情况

  Web项目中Tomcat的JVM参数配置https://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html

Java基础——JVM内存结构的更多相关文章

  1. Java中JVM内存结构

    Java中JVM内存结构 线程共享区 方法区: 又名静态成员区域,包含整个程序的 class.static 成员等,类本身的字节码是静态的:它会被所有的线程共享和是全区级别的: 属于共享内存区域,存储 ...

  2. 简单说说 Java 的 JVM 内存结构

    问:简单说说 Java 的 JVM 内存结构分为哪几个部分? 答:JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分,分别解释如下.虚拟机栈:线程私有的,每个方法在执行时会创建一个 ...

  3. java面试-JVM内存结构

    一.JVM内存结构 二.类加载(classLoader)机制 java中的ClassLoader详解 java类加载机制面试题 java类加载机制面试题 虚拟机把描述类的数据从Class文件加载到内存 ...

  4. [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义

    前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机, ...

  5. Java基础-JVM内存回收

    Sun的JVMGenerationalCollecting(垃圾回收)原理是这样的:把对象分为年青代(Young).年老代(Tenured).持久代(Perm),对不同生命周期的对象使用不同的算法.( ...

  6. 深入理解Java虚拟机—JVM内存结构

    1.概述 jvm内存分为线程共享区和线程独占区,线程独占区主要包括虚拟机栈.本地方法栈.程序计数器:线程共享区包括堆和方法区 2.线程独占区 虚拟机栈 虚拟机栈描述的是java方法执行的动态内存模型, ...

  7. java线程基础巩固---多线程与JVM内存结构的关系及Thread构造函数StackSize的理解

    继续学习一下Thread的构造函数,在上次[http://www.cnblogs.com/webor2006/p/7760422.html]已经对如下构造都已经学习过了: 多线程与JVM内存结构的关系 ...

  8. java的线程安全、单例模式、JVM内存结构等知识学习和整理

    知其然,不知其所以然 !在技术的海洋里,前路漫漫,我一直在迷失着自我. 欢迎访问我的csdn博客,我们一同成长! "不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!" 博 ...

  9. Java虚拟机(一):JVM内存结构

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问 ...

随机推荐

  1. python基本数据类型(容器)- tuple list dict set

    tuple list dict set统称为“容器” 1. 元组tuple 列表list: 1.1 同:元组( ).列表[ ] 都是有序的 1.2 异:元组不能修改,列表可以修改 1.3 注意⚠:如果 ...

  2. jquery-validation验证插件

    参考网站:菜鸟教程 一.导入js <script src="http://static.runoob.com/assets/jquery-validation-1.14.0/lib/j ...

  3. 自学PHP有哪些书籍和教程值得推荐?

    知乎上看到一题主询问:"自学PHP有哪些书籍和教程值得推荐?",互联网深度屌丝秦风给出了不错的答案,希望能够帮助自学PHP的朋友们. 以下仅供参考: 尤其不认可W3school之类 ...

  4. 020.1.1 collections集合工具类

    内容:常见需求以及使用—逆转比较器顺序,最值和同步方法 collections类的方法都是静态方法 强行逆转比较器的顺序例子: //##主函数.java List<String> list ...

  5. Html5 移动应用软件开发框架 JqueryMobile SenchaTouch 介绍

    一.JqueryMobile 介绍 jQuery Mobile 是 jQuery 在手机上和平板设备上的版本. jQuery Mobile 不仅会给主流移动平台带来 jQuery 核心库,而且会发布一 ...

  6. Java对文件的读取方式以及它们的优缺点

    Java常用的对文件的读取方式基本包括: BufferedReader -> readLine(): 按行读取文件,直到读取内容==null FileInputStream -> read ...

  7. jq页面加载问题

    Window.onload=function(){ //页面加载,不能同时编写多个,最后面的会覆盖前面的 }   $(document).ready(function(){ //页面加载,能同时编写多 ...

  8. ajax几种请求几种类型

    jquery向服务器发送一个ajax请求后,可以返回多种类型的数据格式,包括:html,xml,json,text等. 首先说一下jquery中ajax标准的格式. $.ajax({ url: &qu ...

  9. Java中的冒泡排序

    Java中的冒泡排序排序的第一种思想:将第一个值与后面的值相比较,如果第一个值比其他值小,那么将较大的值与第一个换位置,然后继续比较直至所有的数比较完成.这样就可以保证第一个数是最大数.然后将第二个数 ...

  10. thinkpad T61 Fn功能键的完整说明及有关问题解决

    FN键的作用Fn 键是一个组合键,它自己本身没有用,需要和其他功能键组合起来以迅速改变操作特征,它可以组合的键在键盘上都用蓝色标注,具体作用为: Fn+F2:锁定计算机显示器.要再次打开计算机显示器, ...