关于JVM的工作原理以及调优是一个向往已久的模块,终于有幸接触到:http://pengjiaheng.iteye.com/blog/518623

那就顺着这个思路,来梳理一下自己看到后的结论和感想。

首先,垫些基础,下面会用到

1.Java基本数据类型的长度

类型 字节 表示范围 包装类
byte(字节型) 1 -128~127 Byte
short(短整型) 2 -32768~32767  Short
int(整型) 4 -2147483648~2147483647 Integer
long(长整型) 8 -9223372036854775808 ~ 9223372036854775807 Long
float(浮点型) 4 -3.4E38~3.4E38 Float
double(双精度型) 8 -1.7E308~1.7E308 Double
char(字符型) 2 从字符型对应的整型数来划分,其表示范围是0~65535  Charater
booealn(布尔型) 1 true或false Boolean

2.解释【位-字节-字符】概念

关于编码方式和一个字符几个字节的详细解释:http://www.cnblogs.com/God-/p/6006749.html

具体的一个字符是几个字节,就要看具体的编码方式了,可以看看上面这个详细的解释!

这里只需要清楚,上面基本数据类型,例如:short是2个字节的长度,一个字节是8bit(位),那2个字节就是16位,也就是short能表示的数据范围是(2^16)-1次方也就是65536-1的范围内,也就是-32768-32767

3.java中值传递和参数传递的问题

正好之前一段时间有http://www.cnblogs.com/sxdcgaq8080/p/7093462.html

可以作为参考

接着

谈谈主题,堆与栈的概念(参考:http://pengjiaheng.iteye.com/blog/518623)

1. 栈是运行时的单位,而堆是存储的单位

栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。

在Java中一个线程就会相应有一个线程栈与之对应,这点很容易理解,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈。而堆则是所有线程共享的。栈因为是运行单位,因此里面存储的信息都是跟当前线程(或程序)相关信息的。包括局部变量、程序运行状态、方法返回值等等;而堆只负责存储对象信息。

2.堆中存什么?栈中存什么

堆中存的是对象。

 栈中存的是基本数据类型和堆中对象的引用。

  一个对象的大小是不可估计的,或者说是可以动态变化的,但是在栈中,一个对象只对应了一个4btye的引用(堆栈分离的好处)。

 3.为什么不把基本类型放堆中呢?

  上面有基本数据类型的大小,占用的空间一般是1~8个字节——需要空间比较少,而且因为是基本类型,所以不会出现动态增长的情况——长度固定,因此栈中存储就够了

4.本地方法

这里既然说到了本地方法栈,就简单了介绍一下本地方法

简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。

具体参考:http://www.cnblogs.com/langtianya/p/3459647.html

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

后话:

堆和栈中,栈是程序运行最根本的东西。程序运行可以没有堆,但是不能没有栈。而堆是为栈进行数据存储服务,说白了堆就是一块共享的内存。不过,正是因为堆和栈的分离的思想,才使得Java的垃圾回收成为可能。

Java中,栈的大小通过-Xss来设置,当栈中存储数据比较多时,需要适当调大这个值,否则会出现java.lang.StackOverflowError异常。常见的出现这个异常的是无法返回的递归,因为此时栈中保存的信息都是方法返回的记录点。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

主体参考:http://pengjiaheng.iteye.com/blog/518623

【JVM】调优笔记1-----堆栈概念的对碰相关推荐

  1. JVM调优笔记:认识JVM内存模型(jdk1.8)

    文章目录 1.什么是JVM 2.jdk.jre.jvm关系 3.JVM执行过程 4.JVM执行程序的过程 5.JVM运行时数据区 虚拟机栈(线程私有) 本地方法栈(线程私有) 程序计数器(线程私有) ...

  2. JVM调优-配置参数

    什么时候需要调优 非计算密集型任务cpu占用过高 老年代已使用空间大于70% Full GC频繁 单次GC时间大于1秒 出现OOM 程序的响应速度明显变慢 示例情况 非计算密集型任务cpu占用过高:有 ...

  3. JVM调优参数: XSS,XMS,XMX

    Xss: 每个线程的栈内存大小; 过大影响程序并发线程数; Xms: 程序初始堆内存大小(存储对象); Xmx: 程序堆内存扩容的最大值; (当堆内存被占满了,会自动扩容,当扩容到xmx设置的值后,报 ...

  4. JVM调优总结(1):一些概念

    转载自   JVM调优总结(1):一些概念 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.&q ...

  5. jvm相关,垃圾收集算法,垃圾收集器,jvm调优--学习笔记

    对内存合理分配,优化jvm 参数,就是为了尽可能减少新生代(Minor GC),或者是整个老年代(Major GC) ,或者是整个 Java 堆 (Full GC) ,尽量减少 GC 带来的系统停顿, ...

  6. JVM调优学习笔记整理

    1.相关基础知识 1.1 JVM内存模型 参见blog:https://blog.csdn.net/lydon1314/article/details/120716778 网址:https://zhu ...

  7. JVM调优,面到了阿里性能优化师!

    小K 菜哥,我看你朋友圈,你好像换工作了? 菜哥 对啊,前阵子被产品经理烦的头疼,就想换工作了.刚好找到一个不错的. 小K 给我说说呗,让我也参考一下,我现在工资才15K,主管死坑,我也想换工作了 菜 ...

  8. 大型跨境电商 JVM 调优经历

    大型跨境电商 JVM 调优经历 前提: 某大型跨境电商业务发展非常快,线上机器扩容也很频繁,但是对于线上机器的运行情况,特别是jvm内存的情况,一直没有一个统一的标准来给到各个应用服务的owner.经 ...

  9. JVM从入门到精通(七):GC常用参数,Method Area,JVM调优案例分析

    GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:T ...

最新文章

  1. ni visa pci_CHINACOAT 2019“推荐品牌”赫普菲乐|PCI可名文化出品
  2. oracle log block size,案例:Oracle无法启动报错ORA-00218: block size 0 重建控制文件
  3. 物联网通信协议全解析
  4. Linux中的通配符
  5. jmeter接口测试实例-关联
  6. c# mysql 连接串_c# – 如何形成一个正确的MySQL连接字符串?
  7. php伪协议漏洞_PHP之伪协议深入理解
  8. 2014最不受欢迎10编程语言种
  9. Python 解leetcode:728. Self Dividing Numbers
  10. 物权法全文内容有哪些呢-广告外链_SEO优化的站外优化工作有哪些?
  11. Spring Boot 文件上传
  12. centos7.6(腾讯云)开放端口及配置腾讯云安全组
  13. JMX系列之JmxMBeanServer
  14. python输出语句print格式_python输出语句print的用法是什么?_后端开发
  15. mysql创建视图失败_mysql无法创建视图怎么办
  16. 保研之路——上交大电子系直博
  17. 2021-5-17:Spring Boot整合Redis
  18. 编辑表格用什么软件比较好?最好用的都在这了!
  19. !!!!前方高能预警,省钱。省时。省力。省心.一款神奇的APP......
  20. css3绘制的钢琴代码

热门文章

  1. AndroidSDK下载以及配置
  2. 卸载64位python3.6再安装32位python3.6
  3. 机关单位公文编写注意事项
  4. 计算机二级web前端,web前端:原生js之Math对象
  5. android布局layout,Android布局(FrameLayout、GridLayout)
  6. 2021 跨境电商发展关键词:品牌化、独立站、多渠道精细化
  7. web前端之异常/错误监控
  8. 一张图告诉你BCH路线分歧的现状
  9. vue开发黑科技--利用引用类型的值处理复杂数据的编辑
  10. 初涉.....编码__列表__字典