`

JAVA内存相关知识

 
阅读更多

1、JAVA基础数据类型

byte short int long
boolean char float double
1字节 2字节 4字节 8字节

 

2、单个TCP长连接占用的内存大小

   主要包含 读缓存区域  写缓存区域  协议控制区域。

net.ipv4.tcp_rmem = 4096        8192    4194304
net.ipv4.tcp_wmem = 4096       8192    4194304
  • 第一个数字表示,为TCP连接分配的最小内存
  • 第二个数字表示,为TCP连接分配的缺省内存
  • 第三个数字表示,为TCP连接分配的最大内存

一般按照缺省值分配,上面的例子就是读写均为8KB,共16KB

1.6GB TCP内存能容纳的连接数,约为 1600MB/16KB = 100K = 10万

4.0GB TCP内存能容纳的连接数,约为 4000MB/16KB = 250K = 25万

 

3、JAVA内存模型

 

1、jvm1.7之前的版本

 

这里写图片描述

程序计数器(线程私有):

是当前线程锁执行字节码的行号治时期,每条线程都有一个独立的程序计数器,这类内存也称为“线程私有”的内存。正在执行java方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。如果是Natice方法,则为空。

 

java 虚拟机栈(线程私有)

栈内存不受程序员控制。

每个方法在执行的时候也会创建一个栈帧,存储了局部变量,操作数,动态链接,方法返回地址。

每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈。

通常所说的栈,一般是指在虚拟机栈中的局部变量部分。

局部变量所需内存在编译期间完成分配,

如果线程请求的栈深度大于虚拟机所允许的深度,则StackOverflowError。

如果虚拟机栈可以动态扩展,扩展到无法申请足够的内存,则OutOfMemoryError。

这里写图片描述

 

本地方法栈(线程私有)

和虚拟机栈类似,主要为虚拟机使用到的Native方法服务。也会抛出StackOverflowError 和OutOfMemoryError。

 

Java堆(线程共享)

被所有线程共享的一块内存区域,在虚拟机启动的时候创建,用于存放对象实例。

对可以按照可扩展来实现(通过-Xmx 和-Xms 来控制)

当队中没有内存可分配给实例,也无法再扩展时,则抛出OutOfMemoryError异常。

 

方法区(线程共享)

被所有方法线程共享的一块内存区域。

用于存储已经被虚拟机加载的类信息,常量,静态变量等。

这个区域的内存回收目标主要针对常量池的回收和堆类型的卸载。

 

 

 

2、jvm1.8及之后的版本

 

分享到:
评论

相关推荐

    java常用内存配置知识

    java常用内存配置知识,java常用内存配置知识,java常用内存配置知识,

    深入Java核心 Java内存分配原理精讲

    Java内存分配与管理是Java的核心技术之一,今天我们深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域:  ◆寄存器:我们在程序中无法控制  ◆栈:存放基本类型的...

    java之内存泄露

    介绍了java中内存泄露的知识,如:为什么会产生内存泄露,以及通过什么样的方式可以避免内存泄露

    java知识图谱.rar

    java学习拓展 、深入学习知识图谱,JVM内存模型/垃圾回收 ,java设计模式,java集合框架等。。。。

    Java高级知识点详解系列

    Java高级知识点拆解,java内存,泛型,反射等,可以加V进行交流

    java重要知识点总结

    java的垃圾回收将在程序运行过程中自动进行,无需程序员负责回收无用内存。 3.java环境变量配置: 在我的电脑>属性>高级>环境变量里的 path 中加入C:\Program Files\Java\jdk1.6.0\bin的路径(注:放在所有路径的最...

    Java数组与内存控制

    Java数组在内存分配方面的知识;Java数组的静态特征;对于数组变量而言,一定要区分它何时是数组变量,何时代表数组对象本身。

    JAVA面试核心知识点整理283页-2020.pdf.zip

    java面试各大知识点,非常齐全。jvm内存分区,gc算法,类加载机制。并发编程,并发编程各大容器,锁。框架spring mybatis原理,组件介绍。架构设计有设计模式,负载均衡。网络有协议,java 高并发io框架netty。数据...

    JAVA内存分配精讲.docx

    Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到...

    深入理解Java虚拟机——Java内存区域与内存溢出异常.xmind

    这是自己读《深入理解Java虚拟机》时候用XMind建立的思维导图,目的是为了能够帮助自己整理、梳理相关的知识以及方便自己日后的回顾,帮助自己建立起关于JVM的知识体系,里边也有一些对相关内容的补充,通过备注的...

    传智播客_Java基础_Java内存结构

    但是初学者往往深陷Java语言的内存存储结构模型,大量复杂的设计模型使其很难对所学知识进行融会贯通。李若亮老师带你深入剖析Java编程中所内存涉及的方方面面,从JVM的内存申请,到Java语言的内存加载以及Java语言...

    Java内存使用系列一Java对象的内存占用Java开发J

    Java内存使用系列一Java对象的内存占用Java开发Java经验技巧共3页.pdf.zip

    Java内存模型知识详解

    主要介绍了Java内存模型知识详解,文中通过对内存访问时的交互关系图解介绍的十分详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    corejava基础重要知识点总结

    会被gc回收掉 -》 零引用内存回收 属性:对象有什么 方法:对象会什么 5: 动态更新 对于Sun公司官方提供的一些核心方法 值保留一个指向的关系 当若干年后核心类库升级了 我们的程序还是可以正常执行 这是挤兑...

    Java内存分配原理

    JAVA内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识

    JAVA架构知识库整理 JAVA架构知识 Java架构师 Java 架构师必备

    2.1. 线柱2.2.... JAVA8 与元数据.2.4. 垃圾回收与算法2.4.1. 如何确定垃圾2.4.1.1. 引用计数法.2.4.1.2. 可达性分析.2.4.2. 标记清除算法(Mark-Sweep)2.4.3. 复制算法(copying)2.4.4. 标记整理算法(Mark-Comp

    JAVA面试核心知识点整理.rar

    java面试各大知识点,非常齐全。jvm内存分区,gc算法,类加载机制。并发编程,并发编程各大容器,锁。框架spring mybatis原理,组件介绍。架构设计有设计模式,负载均衡。网络有协议,java 高并发io框架netty。数据...

    Java内存问题Java开发Java经验技巧共6页.pdf

    Java内存问题Java开发Java经验技巧共6页.pdf.zip

    java内存对象搜索辅助工具

    比如可以可以用挖掘request对象用于回显,辅助构造java内存webshell等场景。 0x02 知识储备 使用之前必须了解的三个概念 1、 搜索器 根据要搜索什么样的对象,选择对应的搜索器,目前项目有三类。 ...

    Java 对象搜索器 - java内存对象搜索辅助工具

    Java 对象搜索器 | java内存对象搜索辅助工具 肖像画家 肖像画家 肖像画家 0x01 工具简介 ############################################################# Java Object Searcher v0.01 author: c0ny1 github: ...

Global site tag (gtag.js) - Google Analytics