所谓的热部署:比如项目的热部署,就是在应用程序在不停止的情况下,实现新的部署 原理: 实用类加载器(classloader重新读取字节码文件到jvm内存) 如何纯手写一个热部署功能: 1、监听 class文件是否发生改变 版本号、修改时间 作对比 2、如果发生改变就用classloader进行重新读 ...
分类:
编程语言 时间:
2018-10-20 17:26:11
阅读次数:
184
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈: 每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方 ...
分类:
其他好文 时间:
2018-10-18 22:07:49
阅读次数:
233
jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈 ...
分类:
其他好文 时间:
2018-10-15 20:50:23
阅读次数:
272
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains. It is strongly recommendedthat you ex ...
分类:
其他好文 时间:
2018-10-15 14:35:35
阅读次数:
200
Java虚拟机内存区域分为五部分:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。其中程序计数器、Java虚拟机栈、本地方法栈属于线程私有内存区,其生命周期与线程相同,随线程的产生而产生,随线程的消亡而消亡。这几个区域的内存在方法或线程结束时,自然就跟着回收了。因此这三个区域的内存分配和回收具 ...
分类:
编程语言 时间:
2018-10-09 21:38:15
阅读次数:
203
基本回答 一. 对于Java来说,Docker毕竟是一个较新的环境,其内存、CPU等资源限制是通过ControlGroup实现的。早期的JDK版本并不能识别这些限制,进而会导致一些基础问题。 1.如果未配置合适的JVM堆和元数据区、直接内存等参数,Java就有可能试图使用超过容器限制的内存,最终被容 ...
分类:
编程语言 时间:
2018-10-02 14:02:49
阅读次数:
168
1、监控目的2、常用分析工具3、分析案例-MATMAT介绍及分析:启动MAT,然后选择菜单项File-OpenHeapDump来加载需要分析的堆转储文件。文件加载完后,可以看到如图1所示的界面:从图1可以看到他的大部分功能:?Histogram可以列出内存中的对象,对象的个数及大小?DominatorTree可以列出哪个线程以及线程执行的哪些对象占用空间?Topconsumers通过图形列出最大的
分类:
其他好文 时间:
2018-10-02 13:59:13
阅读次数:
194
JVM的内存区域是怎么划分的? JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;有些区域会抛出OOM异常,有些则不会,了解JVM的内存区域划分以及特征,是定位线上内存问题的基础。那么JVM内存区域是怎么划分的呢? 首先是程序计数器(Program Counter Regist ...
分类:
其他好文 时间:
2018-09-30 16:35:31
阅读次数:
267
我在写程序的时候想过的以下这些问题,不知道大家是不是都是这样: 1. 类是怎么加载的,存储在哪里?类的对象存储在哪里,类和类对象怎么关联、对应的? 2. 方法存在哪里?子类继承父类之后覆盖父类的方法之后JVM什么机制执行子类or父类方法? 3. static变量和普通变量是放着一起吗? 4. 为什么 ...
分类:
其他好文 时间:
2018-09-29 16:48:52
阅读次数:
163
前言 JVM内存区域包括 PC计数器、Java虚拟机栈、本地方法栈、堆、方法区、运行时常量池和 直接内存。 本文主要介绍各个内存区域的作用和特性,同时分别阐述各个区域发生内存溢出的可能性和异常类型。 正文 (一). JVM内存区域 Java虚拟机执行Java程序的过程中,会把所管理的内存划分为若干不 ...
分类:
其他好文 时间:
2018-09-24 13:48:09
阅读次数:
185