• Complain

Evans Benjamin J. - Optimizing Java: practical techniques for improving JVM application performance

Here you can read online Evans Benjamin J. - Optimizing Java: practical techniques for improving JVM application performance full text of the book (entire story) in english for free. Download pdf and epub, get meaning, cover and reviews about this ebook. City: Sebastopol;CA, year: 2018, publisher: OReilly Media, genre: Computer. Description of the work, (preface) as well as reviews are available. Best literature library LitArk.com created for fans of good reading and offers a wide selection of genres:

Romance novel Science fiction Adventure Detective Science History Home and family Prose Art Politics Computer Non-fiction Religion Business Children Humor

Choose a favorite category and find really read worthwhile books. Enjoy immersion in the world of imagination, feel the emotions of the characters or learn something new for yourself, make an fascinating discovery.

Evans Benjamin J. Optimizing Java: practical techniques for improving JVM application performance
  • Book:
    Optimizing Java: practical techniques for improving JVM application performance
  • Author:
  • Publisher:
    OReilly Media
  • Genre:
  • Year:
    2018
  • City:
    Sebastopol;CA
  • Rating:
    3 / 5
  • Favourites:
    Add to favourites
  • Your mark:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Optimizing Java: practical techniques for improving JVM application performance: summary, description and annotation

We offer to read an annotation, description, summary or preface (depends on what the author of the book "Optimizing Java: practical techniques for improving JVM application performance" wrote himself). If you haven't found the necessary information about the book — write in the comments, we will try to find it.

Intro; Copyright; Table of Contents; Foreword; Preface; Conventions Used in This Book; Using Code Examples; OReilly Safari; How to Contact Us; Acknowledgments; Chapter 1. Optimization and Performance Defined; Java Performance-The Wrong Way; Java Performance Overview; Performance as an Experimental Science; A Taxonomy for Performance; Throughput; Latency; Capacity; Utilization; Efficiency; Scalability; Degradation; Connections Between the Observables; Reading Performance Graphs; Summary; Chapter 2. Overview of the JVM; Interpreting and Classloading; Executing Bytecode; Introducing HotSpot

Evans Benjamin J.: author's other books


Who wrote Optimizing Java: practical techniques for improving JVM application performance? Find out the surname, the name of the author of the book and a list of all author's works by series.

Optimizing Java: practical techniques for improving JVM application performance — read online for free the complete book (whole text) full work

Below is the text of the book, divided by pages. System saving the place of the last page read, allows you to conveniently read the book "Optimizing Java: practical techniques for improving JVM application performance" online for free, without having to search again every time where you left off. Put a bookmark, and you can go to the page where you finished reading at any time.

Light

Font size:

Reset

Interval:

Bookmark:

Make
Optimizing Java

by Benjamin J. Evans , James Gough , and Chris Newland

Copyright 2018 Benjamin J. Evans, James Gough, and Chris Newland. All rights reserved.

Printed in the United States of America.

Published by OReilly Media, Inc. , 1005 Gravenstein Highway North, Sebastopol, CA 95472.

OReilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://oreilly.com/safari). For more information, contact our corporate/institutional sales department: 800-998-9938 or corporate@oreilly.com .

  • Editors: Susan Conant and Virginia Wilson
  • Production Editor: Colleen Cole
  • Copyeditor: Rachel Monaghan
  • Proofreader: Rachel Head
  • Indexer: Ellen Troutman-Zaig
  • Interior Designer: David Futato
  • Cover Designer: Randy Comer
  • Illustrator: Anna Evans
  • Technical Reviewers: Julian Templeman, Michael Hsu, Alex Blewitt, Dmitry Vyazelenko
  • May 2018: First Edition
Revision History for the First Edition
  • 2018-04-12: First Release

See http://oreilly.com/catalog/errata.csp?isbn=9781492025795 for release details.

The OReilly logo is a registered trademark of OReilly Media, Inc. Optimizing Java, the cover image, and related trade dress are trademarks of OReilly Media, Inc.

While the publisher and the authors have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the publisher and the authors disclaim all responsibility for errors or omissions, including without limitation responsibility for damages resulting from the use of or reliance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work contains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsibility to ensure that your use thereof complies with such licenses and/or rights.

978-1-492-02579-5

[LSI]

Dedication

This book is dedicated to my wife, Anna, who not only illustrated it beautifully, but also helped edit portions and, crucially, was often the first person I bounced ideas off.

Benjamin J. Evans


This book is dedicated to my incredible family Megan, Emily, and Anna. Writing would not have been possible without their help and support. Id also like to thank my parents, Heather and Paul, for encouraging me to learn and their constant support.

Id also like to thank Benjamin Evans for his guidance and friendshipits been a pleasure working together again.

James Gough


This book is dedicated to my wife, Reena, who supported and encouraged my efforts and to my sons, Joshua and Hugo, may they grow up with inquisitive minds.

Chris Newland

Foreword

How do you define performance?

Most developers, when asked about the performance of their application, will assume some measure of speed is requested. Something like transactions per second, or gigabytes of data processedgetting a lot of work done in the shortest amount of time possible. If youre an application architect, you may measure performance in broader metrics. You may be more concerned about resource utilization than straight-line execution. You might pay more attention to the performance of connections between services than of the services themselves. If you make business decisions for your company, application performance will probably not be measured in time as often as it is measured in dollars. You may argue with developers and architects about resource allocation, weighing the cost of devops against the time it takes to do the companys work.

And regardless of which role you identify with, all these metrics are important.

I started out developing Java applications in 1996. I had just moved from my first job writing AppleScript CGIs for the University of Minnesotas business school to maintaining server-side Perl applications for the web development team. Java was very new thenthe first stable version, 1.0.2, was released earlier that yearand I was tasked with finding something useful to build.

Back in those days, the best way to get performance out of a Java application was to write it in some other language. This was before Java had a Just-in-Time (JIT) compiler, before parallel and concurrent garbage collectors, and long before the server side would become dominated by Java technology. But many of us wanted to use Java, and we developed all sorts of tricks to make our code run well. We wrote gigantic methods to avoid method dispatch overhead. We pooled and reused objects because garbage collection was slow and disruptive. We used lots of global state and static methods. We wrote truly awful Java code, but it workedfor a little while.

In 1999, things started to change.

After years struggling to use Java for anything demanding speed, JIT technologies started to reach us. With compilers that could inline methods, the number of method calls became less important than breaking up our giant monoliths into smaller pieces. We gleefully embraced object-oriented design, splitting our methods into tiny chunks and wrapping interfaces around everything. We marveled at how every release of Java would run things just a little bit better, because we were writing good Java code and the JIT compiler loved it. Java soared past other technologies on the server, leading us to build larger and more complex apps with richer abstractions.

At the same time, garbage collectors were rapidly improving. Now the overhead of pooling would very frequently overshadow the cost of allocation. Many garbage collectors offered multithreaded operation, and we started to see low-pause, nearly concurrent GCs that stayed out of our applications way. The standard practice moved toward a carefree creating and throwing away of objects with the promise that a sufficiently smart GC would eventually make it all OK. And it workedfor a little while.

The problem with technology is that it always invalidates itself. As JIT and GC technologies have improved, the paths to application performance have become tricky to navigate. Even though JVMs can optimize our code and make objects almost free, the demands of applications and users continue to grow.

Some of the time, maybe even most of the time, the good coding patterns prevail: small methods inline properly, interface and type checks become inexpensive, native code produced by the JIT compiler is compact and efficient. But other times we need to hand-craft our code, dial back abstractions and architecture in deference to the limitations of the compiler and CPU. Some of the time, objects really are free and we can ignore the fact that were consuming memory bandwidth and GC cycles. Other times were dealing with terabyte-scale (or larger) datasets that put stress on even the best garbage collectors and memory subsystems.

The answer to the performance question these days is to know your tools. And frequently, that means knowing not just how Java the language works, but also how JVM libraries, memory, the compiler, GCs, and the hardware your apps run on are interacting. In my work on the JRuby project, Ive learned an immutable truth about the JVM: theres no single solution for all performance problems, but for all performance problems there are solutions. The trick is finding those solutions and piecing together the ones that meet your needs best. Now you have a secret weapon in these performance battles: the book you are about to read.

Turn the page, friends, and discover the wealth of tools and techniques available to you. Learn how to balance application design with available resources. Learn how to monitor and tune the JVM. Learn how to make use of the latest Java technologies that are more efficient than old libraries and patterns. Learn how to make Java fly.

Next page
Light

Font size:

Reset

Interval:

Bookmark:

Make

Similar books «Optimizing Java: practical techniques for improving JVM application performance»

Look at similar books to Optimizing Java: practical techniques for improving JVM application performance. We have selected literature similar in name and meaning in the hope of providing readers with more options to find new, interesting, not yet read works.


Reviews about «Optimizing Java: practical techniques for improving JVM application performance»

Discussion, reviews of the book Optimizing Java: practical techniques for improving JVM application performance and just readers' own opinions. Leave your comments, write what you think about the work, its meaning or the main characters. Specify what exactly you liked and what you didn't like, and why you think so.