第一章 内存分配
1. 内存区域。
    方法区和堆(线程共享),程序计数器 , VM栈 和 本地方法栈(线程隔离)。
    1) java虚拟机栈:线程私有。描写叙述的是java方法执行的内存模型:栈帧,用户存储 局部变量表。操作数栈。动态链接,方法出口等信息。
         局部变量表在编译时就可以全然确定。假设线程请求的栈深度大于 规定的深度,StackOverflowError.
    2) 本地方法栈,相似。

    3)堆:垃圾收集器管理的主要区域。

线程共享。

    4)方法区: 各个线程共享。存储:载入的类信息。常量。静态变量,即时编译后的代码数据。习惯称作:永久待。

能够不选择垃圾回收(特殊情况有必要)。

         执行时常量池(属于方法区),编译时期的字面量和符号引用。执行期间能够将新的常量放入常量池:String.intern() 方法。
    ‘
2. 对象创建
    1) new的执行: 首先。是否能定位到一个类的符号引用。这个符号引用代表的类是否已被载入、解析和初始化。通过后,为新生对象分配内存。内存大小在类载入完后可确定。

内存分配有两种方式:指针碰撞和空暇列表。

    对象头:这个对象是哪个类的实例,假设找到类的元数据信息,对象的哈希码,GC分代年龄等。
    最后一步是init,依照程序猿的意愿进行初始化。

    2) 对象的内存分布:对象头,实例数据。和对齐填充。

    3)对象訪问的两种方式:句柄訪问  和 直接指针訪问。

栈中存放 reference引用

3. 栈溢出
    1)假设线程请求的栈深度大于虚拟机所同意的最大深度,StackoverflowError
    2)假设虚拟机在扩展栈时无法申请足够内存。则 OutofMemoryError
    JDK5.0以后每一个线程堆栈大小为1M,曾经每一个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在同样物理内存下,减小这个值能生成很多其它的线程.可是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右一般小的应用, 假设栈不是非常深,
应该是128k够用的 大的应用建议使用256k。这个选项对性能影响比較大。须要严格的測试。

threadstacksize选项解释非常相似,官方文档似乎没有解释,在论坛中有这样一句话:"-Xss is translated in a VM flag named ThreadStackSize”

JVM学习笔记-内存管理的更多相关文章

  1. JVM学习笔记——内存结构篇

    JVM学习笔记--内存结构篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的内存结构部分 我们会分为以下几部分进行介绍: JVM整体介绍 程序计数器 虚拟机栈 本地方法栈 堆 方法 ...

  2. JVM学习笔记——内存模型篇

    JVM学习笔记--内存模型篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的内存模型部分 我们会分为以下几部分进行介绍: 内存模型 乐观锁与悲观锁 synchronized优化 内 ...

  3. c语言学习笔记.内存管理.

    内存: 每个程序的内存是分区的:堆区.栈区.静态区.代码区. 1.代码区:放置所有的可执行代码,包括main函数. 2.静态区:存放所有的全局变量和静态变量. 3.栈区:栈(stack),先进后出.存 ...

  4. C学习笔记-内存管理

    作用域 一个C语言变量的作用域可以是代码块 作用域,函数作用域或者文件作用域 代码块是{}之间的一段代码 同一个代码块不可以有重名变量 auto自动变量 一般情况下代码块内部定义的变量都是自动变量 也 ...

  5. jvm内存JVM学习笔记-引用(Reference)机制

    在写这篇文章之前,xxx已经写过了几篇关于改jvm内存主题的文章,想要了解的朋友可以去翻一下之前的文章 如果你还不了解JVM的基本概念和内存划分,请阅读JVM学习笔记-基础知识和JVM学习笔记-内存处 ...

  6. JVM学习笔记(四)------内存调优【转】

    转自:http://blog.csdn.net/cutesource/article/details/5907418 版权声明:本文为博主原创文章,未经博主允许不得转载. 首先需要注意的是在对JVM内 ...

  7. JVM学习笔记(四)------内存调优

    首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提 ...

  8. JVM学习笔记-第三章-垃圾收集器与内存分配策略

    JVM学习笔记-第三章-垃圾收集器与内存分配策略 tips:对于3.4之前的章节可见博客:https://blog.csdn.net/sanhewuyang/article/details/95380 ...

  9. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

随机推荐

  1. 清空Cookie

    function delCookie() { ; i < cookies.length; i++) { try { document.cookie = cookies[i] + "=0 ...

  2. 今日Java——Cay Horstmann访谈

    这是本人在InfoQ中文站审校的文章,原文链接是:http://www.infoq.com/cn/articles/java_cay_horstmann,感觉内容很不错,分享给大家看看. 近日Info ...

  3. TCP端口号范围及分类

    https://blog.csdn.net/my_heart_/article/details/52601924 端口号的范围是从1-65535 端口的概念:  在网络技术中,端口(Port)大致有两 ...

  4. c++ map使用问题【运行结果不一样】

    map经常把指针作为key,这种情况下. 我们经常会很自然的以为,如果要取元素时,会按照我们存的顺序拿到元素. 但是事实上不是这样的,因为map取得时候是按key的大小排序的,而如果用指针作为key, ...

  5. css布局 - 常规上中下分左右布局的一百种实现方法(更新中...)

    一. 上中下左固定 - fixed+margin 概括:如图,此种布局就是顶部.底部和左侧固定不动,只有中间右侧超出可滚动. html: <header>我是头部position: fix ...

  6. 原生js--应用程序存储和离线web应用

    1.应用程序缓存和其它存储方式的区别: a.不像localStorage和sessionStorage那样只存储web应用程序的数据,它将应用程序自身存储起来. b.不像浏览器缓存一样会过期或者被用户 ...

  7. SharpGL学习笔记(二) 模型变换(几何变换)

    (二) 模型变换 模形变换就是指的在世界坐标系中(world space)做“移动”,“旋转", "缩放"三种操作. 首先要说明的,在Opengl中,是用4x4矩阵进行坐 ...

  8. eclipse中改变默认的workspace的方法

    1.File-->Switch Workspace-->Other 2.Window-->Preferences-->General-->Startup and Shui ...

  9. Coding和Git的环境搭建

    Github太慢了.打开网页慢,下载也只有几kb. 于是找了国内的Git,据说coding不错.就申请了个. 其实csdn也有...但是没人家的专业... 1 注册coding  https://co ...

  10. thinkCMF----路由跳转

    使用ThinkCMF的时候,在模板界面上,可能会用到一些自定义路由,ThinkCMF路由的基本配置与用法: ThinkCMF自带有路由美化的功能: 这种路由都是当你创建栏目或创建文章的时候,自动生成的 ...