map 是 key value 类型的数据结构 初始化 map 声明之后必须要初始化才能使用 初始化方法: make 通过 make 可以分配内存空间,如果省略 size 的话,分配的空间会较少,当内存超出范围时会内存再分配 示例: 直接初始化 声明时直接写入值 多层 map 在使用多层 map 时 ...
分类:
其他好文 时间:
2019-12-22 16:43:25
阅读次数:
121
JVM部分数据整理 一、运行时数据区域 Java内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【Java堆、方法区】、直接内存(不受JVM GC管理) 1、线程私有部分 1.1、程序计数器 程序计数器(Program Counter Register)一块较小的内存空 ...
分类:
其他好文 时间:
2019-12-21 22:46:38
阅读次数:
81
Java虚拟机基本结构 角色:字节码执行引擎,垃圾回收系统,方法区,Java堆,直接内存[共享],类加载子系统,PC寄存器(计数器),本地方法栈,Java栈[私有] 垃圾回收的工作重点:方法区,Java堆,直接内存 一个Java线程对应一个java栈 参数 程序参数:应用程序使用 虚拟机参数:虚拟机 ...
分类:
其他好文 时间:
2019-11-29 11:19:15
阅读次数:
79
JavaGC的相关知识点在《深入理解JAVA虚拟机》上比较琐碎,有的概念没有详细介绍,前后顺序也不太连贯。为了便于理解原理和问题排查,反复阅读了这一部分及相关文章后简单的总结一下。
思想脉络是:JVM内存模型->内存模型中的堆的进一步分代->GC回收算法、日志、回收器,从一个面(内存模型)到一个点... ...
分类:
编程语言 时间:
2019-11-22 19:08:34
阅读次数:
94
一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 ...
分类:
编程语言 时间:
2019-11-22 00:34:49
阅读次数:
72
从上面这个图我们总体上对JVM的结构特别是内存结构有了比较清晰的认识,虽然在JDK1.8+的版本中,JVM内存管理结构有了一定的优化调整。主要是方法区(持久代)取消变成了直接使用元数据区(直接内存)的方式,但是整体上JVM的结构并没有大改,特别是我们最为关心的堆内存管理方式并没有在JDK1.8+的版本中有什么变化,所以图中的结构整体上是没有什么不准确的,之所以将方法区以及持久代标注出来,主要还是为了起到对比认识的作用,大家知道就可以了。
关于持久代元数据区的使用问题,目前可以理解就是使用的物理内存,理论上是不受JVM自动内存回收机制管理的,如果不设置参数大小默认最大使用限制就是操作系统可用物理内存的大小,设置了-XX:MetaspaceSize参数的话,JVM就会在使用物理内存空间时自己进行限制。
至于直接内存与物理内存到底是不是一回事,我认为对于我们理解上没有区别,只是概念的区别,另外就是对这块内存使用细节上的区别,如果不受JVM的自动回收管理,那么怎么管理呢?说到底还是JVM本身在直接使用物理内存或者说是直接内存(用时直接“malloc”物理内存区域,而不再是JVM进程启动时初
分类:
编程语言 时间:
2019-11-19 01:19:54
阅读次数:
88
JDK1.8之前,java内存分为 线程共享区:堆、方法区、直接内存(非运行时数据区的一部分)。线程私有区:程序计数器、虚拟机栈、本地方法栈。 JDK1.8开始,虚拟机取消了方法区,改为元空间。 程序计数器: 程序计数器是一块小的内存空间,存放线程执行的信息,如字节码的行号指示器还有分支、循环、跳转 ...
分类:
编程语言 时间:
2019-10-09 12:09:02
阅读次数:
93
[TOC] Java内存区域 运行时数据区 & Java 内存结构 & Java 内存区域 JDK 1.8 之前: JDK 1.8 : 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区(1.8 转到直接内存的元空间) 直接内存 (非运行时数据区的一部分) 1. 程序计数器 程 ...
分类:
其他好文 时间:
2019-10-05 10:42:22
阅读次数:
113
多线程 35. 并行和并发有什么区别? 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群。 并行是指两个或者 ...
分类:
编程语言 时间:
2019-10-03 23:40:56
阅读次数:
89
netty 可以学习的不仅是网络库,还包含了线程模型、如何写java异步交互、定制的缓存模型、对于直接内存的池化管理、内部类的巧妙用法、优秀的设计模式、以及对于一些罕见网络通信的bug的处理、跨平台的思考。 注: 堆外内存:堆内存容易受GC影响导致网络传输下因GC的影响导致内存地址变化,内存泄漏,减 ...
分类:
Web程序 时间:
2019-10-02 13:06:45
阅读次数:
140