第一章 内存分配
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. async await yield

    问题:async 和yield有什么区别? 无奈只能用“书到用时方恨少”来解释这个问题了.其实也是自己从开始编程就接触的是nodejs中的async 以及await ,yield几乎.貌似好像都没使用 ...

  2. 用MyEclipse将Maven Dependencies中的jar包导出

    1.右击pom.xml文件,选择Run As  ——> Maven build… 2.在打开的页面中,如图输入“dependency:copy-dependencies”,后点击“Run”即可 ...

  3. open-falcon之alarm、sender、links说明.md

    alarm 功能 处理judge 产生的告警event 区分告警优先级,优先处理级别比较高的告警 为用户提供回调接口 生成告警msg 展示未恢复的告警 配置文件 { "debug" ...

  4. Android开发训练之第五章——Building Apps with Connectivity & the Cloud

    Building Apps with Connectivity & the Cloud These classes teach you how to connect your app to t ...

  5. javascript学习之this

    转自:https://www.cnblogs.com/pssp/p/5216085.html 例子1:  function a(){ var user = "追梦子"; conso ...

  6. 【CF889E】Mod Mod Mod DP

    [CF889E]Mod Mod Mod 题意:给你一个序列$a_1,a_2...a_n$,定义$f(x,n)=x\mod a_n$,$f(x,i)=x\mod a_i+f(x \mod a_i,i+1 ...

  7. [吐槽]我为什么讨厌C++

    最近在改currennt的代码,我擦擦擦,实在是忍不了了 C++最恶心的地方在于指针引用与面向对象混用!!TMD各种不匹配 举例: template <typename TDevice> ...

  8. python3查询数据库并生成excel报表

    #!/usr/bin/env python3 #encoding=UTF- import os import time import xlwt hostIp = 'xxx.xxx.xxx.xx' us ...

  9. freemarker了解

    今天主要了解了项目流程,了解了这周要做退款详情迁移,了解了freemarker

  10. pandas 数据预处理

    pandas 数据预处理 缺失数据处理 csv_data=''' A,B,C,D 1.0,2.0,3.0,4.0 5.6,6.0,,8.0 0.0,11.0,12.0,,''' import pand ...