发布于 2017-12-06   234人围观   0条评论
自从接触java以来,一直就有学习java虚拟机的内存模型,但是从来都没有深入系统的了解,对内存模型的认识还比较模糊,今天恰巧有看到相关的文章,觉得还是需要整理一下 己的认知才能有所收获。 # JVM内存结构 Java内存模型是指Java虚拟机的内存模型,我们来看下Java内存模型的图片: ![](https://leanote.com/api/file/getImage?fileId=59d
查看更多
发布于 2017-12-06   53人围观   0条评论
# 什么是类的加载 类加载是指将源代码编译后的.class加载到内存中初始化待程序使用的过程,类加载过程会做两件事,一是将类的描述信息加载至方法区,二是在堆内存区生产java.lang.Class对象的实例
查看更多
发布于 2017-12-06   221人围观   0条评论
#什么是GC Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对JVM(Java Virtual Machine)中的内存进行标记,并
查看更多
发布于 2017-12-06   416人围观   0条评论
# JVM内存参数调优 ## 为什么要GC调优?   或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并不总是需要进行GC优化,但当你的系统时常报了内存溢出或者java程序运行缓慢时,优先排查是否是程序导致的内存泄漏,再看你是否需要JVM参数调优。   想一下进行GC优化的最根本原因,垃圾收集器清除在Java程序中创建的对象,GC执行的次数
查看更多
发布于 2017-12-06   36人围观   0条评论
运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决。所有的工具几乎都是依赖于jdk的接口和底层的这些命令,研究这些
查看更多
发布于 2017-12-06   197人围观   0条评论
最近一个测试环境的api-gateway一直报请求超时,并且未发现报错异常信息,于是开始排查是否是JVM参数不对导致用户线程挂起。 排查过程如下: 1. 查看目标机器的进程pid ``` [baibei@CBEC-UAT-1 uat]$ jps -l 27723 com.baibei.apigateway.Application ``` 2. 查看jvm内存使用情况 ``` [baibei@C
查看更多
发布于 2017-12-06   122人围观   0条评论
volatile这个关键字我们在实际开发过程中,或多或少都使用过,但是对于其背后的实现原理机制还是不够清晰,接下来满满梳理一番。 ## 我们来看一段代码 ``` i = i + 1; ``` 一个简单的对i变量的递增操作,在单线程执行的情况下,没有什么问题,但是在多线程情况下,结果就会有问题了。原因是因为计算机的内存模型为每个线程分配了CPU高速缓存,来加快CPU的处理速度。 假如现i的初始
查看更多
发布于 2017-12-06   141人围观   0条评论
java反编译命令 ``` javap -c -verbose xxx.class ```
查看更多