美文网首页
查看Java对象内存占用

查看Java对象内存占用

作者: 时待吾 | 来源:发表于2017-04-21 17:01 被阅读67次

    http://yueyemaitian.iteye.com/blog/2033046

    http://www.cnblogs.com/niurougan/p/4196048.html

    http://www.cnblogs.com/magialmoon/p/3757767.html

    http://www.cnblogs.com/merru/articles/4626907.html

    如何查看java对象所占的内存大小 http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246141a38b5ec7b764b4589c677640ab21a1cacab672c601e76e0dd9bd3149ca6992b298e20347308c31c528516f7980276d621e04d99af0e90b1e742e7b9a2d5c85523dd23016df6f69c2b7403be6ee71541f4d79f5f632c07caeb2712fb4e7659885547a13788f7446f10f0f7&p=8b2a975486cc42a95dad8268460e9c&newp=98759a46d0c61df20be2963c5c5d8f231610db2151d7d5136b82c825d7331b001c3bbfb42324120ed9cf7d6107af4f5ceafb34763d0923a3dda5c91d9fb4c57479d47a&user=baidu&fm=sc&query=java%B2%E9%BF%B4%B6%D4%CF%F3%C4%DA%B4%E6%D5%BC%D3%C3&qid=c1616f830003af61&p1=4

    父类私有变量是否被子类继承详细解说(答案:内存中存在,但sun公司定义为不继承)

    http://cache.baiducontent.com/c?m=9d78d513d9d437aa4f9b95697c14c0111b4381132ba7a1020ea5843892732d43506793ac57280774d9d27d1716de4b4b9df22172461451c78cb8fe5dabba855e2d9f2644676c855665d50edec85155b537912afede6af0cbf525e3abc5a7dc4352ba44750b9781fa4d7015dd19f2033192b1e938022f1bad9c43728e5c6028ef3430c7508891251e069680df4b4db33da16206e6df22b14e05c412b36f6b3345d05bc709465032f74e57e8343813e3ea4a965d6e3150a149c3aeb0bcfc3b86cb9b458f8cbcbb68d53ee99facbf33557121e738eef5e0e72a643253989c8201c445e0adaaa713a903d0640afd0e2a69389376c7c2c90ca33c0de9b13fb87a79786917d8b17ffb71766a32&p=97748b1981904ead43bd9b7d0c1793&newp=997bc64ad49e11a05bec9525524a98231610db2151d6d5166b82c825d7331b001c3bbfb42324120fd3c37c650aae4d58eefb3179360723a3dda5c91d9fb4c57479d5&user=baidu&fm=sc&query=%D7%D3%C0%E0%BC%CC%B3%D0%B8%B8%C0%E0+%CB%BD%D3%D0%B1%E4%C1%BF%CA%C7%B7%F1%BC%CC%B3%D0+%BB%B9%CA%C7%BC%CC%B3%D0%C1%CB%C3%BB%D3%D0%B7%C3%CE%CA%C8%A8%CF%DE&qid=8a95c09d0000a044&p1=2

    所以这才是真正的继承!  以下为原理图,作参考!

                                ${jobTracker}            ${nameNode}                                                        /shareScripts/xxmapred-site.xml                                                mapreduce.job.map.class                    com.besttone.hbase.demo.WordCount$TokenizerMapper                                                    mapreduce.job.reduce.class                    com.besttone.hbase.demo.WordCount$IntSumReducer                                                    mapreduce.job.combine.class                    com.besttone.hbase.demo.WordCount$IntSumReducer                                                    mapreduce.job.output.key.class                    org.apache.hadoop.io.Text                                                    mapreduce.job.output.value.class                    org.apache.hadoop.io.IntWritable                                                    mapreduce.input.fileinputformat.inputdir                    ${inputDir}                                                    mapreduce.output.fileoutputformat.outputdir                    ${outputDir}                                                    mapred.mapper.new-api                    true                                                    mapred.reducer.new-api                    true                                                    mapreduce.job.reduces                    1                                                                    Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]       

    配置文件要注意的地方:

    mapred.mapper.new-api和mapred.reducer.new-api这两个属性设置成true,表示使用新的api接口。老的API接口的配置属性和新的配置属性是不一样的,mapreduce打头的属性都是新接口属性,老接口属性是mapred打头的。

    下面用图形化的方式来描述如何创建一个workflow

    1 新建一个workflow:

    这里我们新建了一个workflow叫test5,然后点击保存。

    2 查看一下这个workflow的工作目录在哪:

    可以看到如图所示的工作目录,现在工作目录下面是空的,等提交了workflow后,在工作目录下面就会生成workflow.xml还有lib目录,里面存放相应的依赖包.

    3 编辑这个workflow,拖一个mapreduce action到start和end之间:

    转到mapreduce action的编辑界面,

    Jar名称选择你自己编写的wordcount类打成的jar包,这个JAR包必须上传到HDFS上,我这里存放在HDFS的/sharelib目录下面。

    准备阶段新增一个“添加删除”动作,填写删除的目录,因为mapreduce输出目录如果存在的话,提交JOB的时候会报错无法提交,所以在提交JOB之前需要删除输出目录,这里输出目录的写法是${outputDir},为EL表达式语言,即对输出目录进行了参数化,当你在提交workflow的时候,会弹出一个对话框让你填写这些参数。

    job属性配置:

    作业XML设置:

    JOB属性配置会覆盖作业XML文件中的配置。作业XML一般都是配置一些通用的不长改变的属性,存成一个文件放到HDFS上去,经常变的就放到job属性配置中一个一个的配置。

    3 配置好后,提交workflow,填写输入目录和输出目录两个参数,就job就开始运行了。

    说明:oozie提交mapreduce job和传统的通过hadoop jar方式运行job不同,hadoop jar方式把该配置的属性都写在main方法里面了,而oozie提交mapreduce不能这样做,所以必须把传统的main方法里设置的属性,都作为job属性设置一项一项的设置上。至于具体的属性名,可以通过查看源代码来找到,比如job.setMapperClass(TokenizerMapper.class);可以点进这个方法里面去看到底设置的是哪个属性名,常用的属性名都定义在MRJobConfig这个类中,比如public static final String MAP_CLASS_ATTR = "mapreduce.job.map.class";定义的是将要使用的map类。

    workflow提交后,我们再次去查看工作区,可以看到如下图:

    工作区下面多了workflow.xml和lib目录,lib目录里存放的是我们刚才设置的jar文件:

    workflow.xml内容就是本文开头描述的XML代码片段。

    相关文章

      网友评论

          本文标题:查看Java对象内存占用

          本文链接:https://www.haomeiwen.com/subject/kdalzttx.html