# 057.Java面向内存编程
不等不靠,有囧有料。攻城狮,是一种精神,亦是一种品质。
从`面向增删改查`到`面向性能`编程,其关键一步是面向内存编程。
就像每次敲下`.`时,我们会脑补`NullPointerException`一样,
每个方法和类,我们都要脑补其生命周期,内存占用以及大概何时回收。
实际项目通常是师傅带徒弟,着急忙慌搞业务功能,其他基本靠框架。
在当性能出现瓶颈时,有的人会选择分布式,而我建议先关注以下,
* 写一手好代码,可读性好,内存友好(编码攻城狮)
* 调一手好参数,高吞吐,低延迟(参数攻城狮)
@史荣久 / 2017-12-24 / CC-BY-SA-3.0
## 观看视频
* [腾讯视频(被转720P)](http://v.qq.com/x/page/o0523i6008q.html)
* [优酷视频(被转720P)](http://v.youku.com/v_show/id_XMzI2MjMyOTY0MA==.html)
* [百度网盘(原始1080P)](https://pan.baidu.com/s/1kV1RDHH)
## 内容摘要
* 框架是专家写的且优化过。创建对象通常很廉价。
* 对象有多大(byte),多了也不那么廉价。
* 项目中比较集中的坏味道代码。
* JVM内存模型和GC特点。
* JVM启动时和GC密切相关的参数。
* 指标:MinoGC 1小时,30ms内完成。FullGC不要发生,1秒内完成。
* 自带命令工具Jstat/jmap/jstack/jinfo
* 集成mat/jprofile, 自带jvisualvm/jconsol
## 参考资料
* [面向GC的JAVA编程 - 酷壳](https://coolshell.cn/articles/11541.html)
* [Java内存模型 - 掘金](https://juejin.im/post/59da10a76fb9a00a664a5e6e)
* [Java 内存区域和GC机制 - 博客园](http://www.cnblogs.com/zhguang/p/3257367.html)
* [jvm-memory-model](http://coding-geek.com/jvm-memory-model/)
* [Java对象内存占用分析](https://segmentfault.com/a/1190000006933272)
* [一个Java对象到底占用多大内存?](http://www.cnblogs.com/zhanjindong/p/3757767.html)
* [JVM 命令行参数解析 - 黑客派](https://hacpai.com/article/1513694373406)
* [性能调优攻略 - 酷壳](https://coolshell.cn/articles/7490.html)
* [性能测试应该怎么做? - 酷壳](https://coolshell.cn/articles/17381.html)
* [JVM系列 - redcreen的专栏](http://www.cnblogs.com/redcreen/tag/jvm/)
* [JVM系列三:JVM参数设置、分析 - 博客园](http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html)
* [JVM监控与调优 - 博客园](http://www.cnblogs.com/zhguang/p/Java-JVM-GC.html)
* [CMS和G1图解 - Java官方](http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html)
* [性能测试应该怎么做? - 酷壳](http://www.cnblogs.com/redcreen/archive/2011/05/05/2038331.html)
领取专属 10元无门槛券
私享最新 技术干货